关于iOS设备适配的问题,总会有人踩到坑。这篇文章是自己整理的一些关于适配的方面的...就算经验吧。
这篇文章主要是分享一些自己定义的宏。
我们在适配之前。就应该判断当前手机是不是X系列(可以在pch或者.h的头文件中配置),
//判断iPhone4系列
#define kiPhone4 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640,960), [[UIScreen mainScreen] currentMode].size) && !isiPad : NO)
//判断iPhone5系列
#define kiPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640,1136), [[UIScreen mainScreen] currentMode].size) && !isiPad : NO)
//判断iPhone6系列
#define kiPhone6 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(750,1334), [[UIScreen mainScreen] currentMode].size) && !isiPad : NO)
//判断iphone6+系列
#define kiPhone6Plus ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242,2208), [[UIScreen mainScreen] currentMode].size) && !isiPad : NO)
//判断iPhoneX
#define IS_IPHONE_X ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125,2436), [[UIScreen mainScreen] currentMode].size) && !isiPad : NO)
//判断iPHoneXr
#define IS_IPHONE_Xr ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828,1792), [[UIScreen mainScreen] currentMode].size) && !isiPad : NO)
//判断iPhoneXs
#define IS_IPHONE_Xs ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125,2436), [[UIScreen mainScreen] currentMode].size) && !isiPad : NO)
//判断iPhoneXs Max
#define IS_IPHONE_Xs_Max ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242,2688), [[UIScreen mainScreen] currentMode].size) && !isiPad : NO)
相信这段代码很多人都会写并且已经写在文件中,下面就是一些判断。
1、X系列比其他机型多了一个“齐刘海”,那么,我们在做适配的过程中,必须考虑到“齐刘海”
#define k_Height_StatusBar ((IS_IPHONE_X==YES || IS_IPHONE_Xr ==YES || IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES) ?44.0:20.0)//如果是X系列,其状态栏高度是44 否则22。这个是在隐藏导航栏的时候或许你会用的到。
#define k_Height_NavBar ((IS_IPHONE_X==YES || IS_IPHONE_Xr ==YES || IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES) ?88.0:64.0)//如果是X系列,其导航栏高度是88 否则64.
2、第二个考虑的就是“安全区”了,在很多app中、我们都会用到tabbar。
#define k_Height_TabBar ((IS_IPHONE_X==YES || IS_IPHONE_Xr ==YES || IS_IPHONE_Xs== YES || IS_IPHONE_Xs_Max== YES) ?83.0:49.0)
3、在使用tableView中,我们经常发现tableView会偏移,
if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}或者
self.automaticallyAdjustsScrollViewInsets=NO;
self.extendedLayoutIncludesOpaqueBars=YES;
self.edgesForExtendedLayout=UIRectEdgeTop;
来解决tableView偏移的问题。
如有错误,欢迎指正,多多点赞,打赏更佳,您的支持是我写作的动力。