Fork me on GitHub

iOS11适配

1,运行项目在iphoneX,发现没有充满屏幕,上下会有黑色区域,这是因为没有设置对应的启动图(尺寸:1125*2436)


2,@available(iOS 9.0,*)的作用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
作用:可以判断不同平台和系统。oc中通常在if(while,guard等)判断语句中,判断系统版本。
参数1:iOS 9.0表示只有9.0以上的系统才为真
参数2:*表示在所有平台下
//如果是iOS11以上的系统
if (@available(iOS 11.0, *)) {
_tableV.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
if (UI_IS_IPHONE11) {
//iPhone X导航高度为88
_tableV.contentInset = UIEdgeInsetsMake(64+24, 0, 0, 0); //iphoneX,导航高度增加了24,高88
}else
{
//除iPhone X之外的设备(导航高度为64)
_tableV.contentInset = UIEdgeInsetsMake(64, 0, 0, 0); //iphoneX,导航高度增加了24,高88
}
_tableV.scrollIndicatorInsets = _tableV.contentInset;
}

3, iphoneX屏幕分辨率和实际尺寸

1
2
iphoneX的实际尺寸为:375 x 821
屏幕分辨率:1125 x 2436

4,iphoneX的导航高度

1
2
1,iphoneX的导航高度为88,比原来高了24
2,其他机型的导航高度为64

5,UITabbar复用问题,就是点击两次tabbar才可以正常选中。

1
2
3
解决方案1:
一般我们在viewWillAppear和viewDidAppear中发送通知移除系统的tabbar,
在iPhone X和iPhone 8手机上iOS11系统,出现了问题,然后在发送通知的时候延迟了0.5s可以解决。

6,在xcode9下,使用WKWebView崩溃。

1
2
3
4
5
6
7
8
9
10
11
解决方法:
//实现下面代理方法,并return。
- (void)webView:(WKWebView *)webView
didFailNavigation:(WKNavigation *)navigation
withError:(NSError *)error {
// ……
// Xcode 升级到9后 WKWebViewJavascriptBridge.m 中有个 bug
// 需要在这个方法得最后加上 return,否则崩溃。
// 不升级 Xcode 的话,没问题。
return;
}

7,新建项目报错,提示安全区域不支持iOS9.0以下。(main.storyboard和LaunchScreen.storyboard都要去掉。)

image.png