iPhoneX适配

iPhoneX来了,作为一名iOS Developer,又一次踏上了适配之路...

适配启动图

如果在iPhoneX启动你的应用发现上下都有黑边,那你的LaunchImage启动方案肯定是Assets。
解决方法:
1 在LaunchImage对应的Assets文件夹里中添加一张像素1125 * 2436的启动图。(可以按照苹果规范命名为[email protected]
2 在对应的Contents.json文件中增加下面的内容(注意JSON Array元素分割符)

{
    "orientation" : "portrait",
    "extent" : "full-screen",
    "idiom" : "iphone",
    "subtype" : "2436h",
    "filename" : "启动图名字.png",
    "minimum-system-version" : "11.0",
    "scale" : "3x"
}

或者放弃Assets 直接用LaunchScreen.storyboard作为启动图

导航栏高度

  • iOS 7之前
    状态栏不在屏幕高度内,所以导航栏高度:44pt

  • iOS 7 ~ iOS 10
    状态栏:20pt
    导航高度:44pt
    合计可用高度:64pt

  • iOS 11
    非iPhoneX:64pt
    iPhoneX:44pt(状态栏) + 44pt = 88pt

iPhoneX 用到的宏

// iPhone X
#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
// 状态栏高度
#define APP_STATUS_HEIGHT (iPhoneX ? 44 : 20)
// 导航高度
#define APP_NAVIGATION_HEIGHT ((APP_STATUS_HEIGHT) + 44)
// HOME栏高度
#define APP_HOME_INDICATOR_HEIGHT (iPhoneX ? 34 : 0)
// tabBar高度
#define APP_TAB_BAR_HEIGHT (49 + (APP_HOME_INDICATOR_HEIGHT))

TabBar

iPhoneX 底部新增一个半角的矩形,使得tabBar多出来了34p的高度。
如果你的用是系统的TabBar会自动适配safeArea。
如果你使用的是自定义TabBar你可能会遇到它的半角区域变成黑色的问题,原因是你自定义的TabBar高度比系统的小34p。
解决方法 1:

controller.tabBar.backgroundColor = [UIColor whiteColor];//添加你的颜色

解决方法 2:
修改你自定义的tabBar的frame,重新布局内容。

iPhoneX 在push进入 webView页面时,底部有黑边闪过

这也是由iOS11的safeArea引起的问题。检查webView的高度是否是(屏幕高度-(导航栏高度+状态栏高度))
解决方案:
设置webView.scrollView的contentInsetAdjustmentBehavior

if (@available(iOS 11.0, *)) {
    webView.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}

待续...

参考

Apple iPhoneX Human Interface Guidelines

最后

感谢阅读,如果对大家有帮助,请在github上follow和star,本文发布在逆流的博客,转载请注明出处

你可能感兴趣的:(iPhoneX适配)