iOS关于适配的一些常见问题

关于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偏移的问题。

如有错误,欢迎指正,多多点赞,打赏更佳,您的支持是我写作的动力。

你可能感兴趣的:(iOS关于适配的一些常见问题)