iOS 知识点iosiOS学习交流

几句代码搞定iOS屏幕适配

2017-01-16  本文已影响9000人  iOS阿能

文章由于iPhone X,导致高度比例问题,取消高度作为比例,直接用宽度比例. 近期我会抽空录制适配教学适配,希望能帮助到大家,要相信一句话,用起来越简单,可定制性就越差(不可横屏适配,不可适配iPad,当苹果不按常规屏幕比例出牌,都会出问题.)

隨著iPhoneX即將上市,本文的捷徑適配或許不再適用了,要記住,用起來最簡單的,往往局限性最大的,這種並不能做橫屏適配,屏幕适配并非真正的放大缩小,我会录制一个视频,重新说一下适配(基于storyboard,xib开发)

老规矩,上图


9F61CEBF-4709-4FE0-AD15-F664874DCFAE.jpg image.png

首先,除了iPhone4, iPhone5,6,6plus机型,都是成比例的,也就是每个屏幕的宽度/高度都是相等的,所以我们可以利用这个成比例,写以下代码
/*
屏幕适配
*/

//判断设备类型
#define iPhone4 ([UIScreen mainScreen].bounds.size.height == 480)
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)
#define iPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(750, 1334), [[UIScreen mainScreen] currentMode].size)) : NO)
#define iPhone6plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? (CGSizeEqualToSize(CGSizeMake(1125, 2001), [[UIScreen mainScreen] currentMode].size) || CGSizeEqualToSize(CGSizeMake(1242, 2208), [[UIScreen mainScreen] currentMode].size)) : NO)
// 判断是否是iPhone X
#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
// 状态栏高度
#define STATUS_BAR_HEIGHT (iPhoneX ? 44.f : 20.f)
// 导航栏高度
#define NAVIGATION_BAR_HEIGHT (iPhoneX ? 88.f : 64.f)
/// 导航栏高度(不包括状态栏)
#define NAVI_BAR_HEIGHT 44.0f

/// Tab Bar高度
#define TABBAR_HEIGHT (iPhoneX ? (49.f+34.f) : 49.f)
#define kScreenHeight [UIScreen mainScreen].bounds.size.height
#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kWidth(R) (R)*(kScreenWidth)/320 这里的320我是针对5s为标准适配的,如果需要其他标准可以修改
#define kHeight(R) kWidth(R)  这里的568我是针对5s为标准适配的,如果需要其他标准可以修改

代码简单我就不介绍了,
以此思想,我们可以对字体下手
#define font(R) (R)*(kScreenWidth)/320.0  这里是5s屏幕字体
#define kFONT16                  [UIFont systemFontOfSize:font(16.0f)]
效果图如下
Paste_Image.png IMG_1642.PNG

可以看到屏幕label的地方,我这里只写iPhone5s的代码,在iPhone7跑起来以后,界面是成比例的,连同字体也是.

不用百度的那么多屏幕适配,简单几句搞定.
唉,又技术泄露了.
转载记得加上俺名字,谢谢.

上一篇下一篇

猜你喜欢

热点阅读