iOS 11适配
2017-09-22 本文已影响114人
爱睡觉的蘑菇
1,导航栏返回按钮自定义
以前都是使用
//设置返回按钮
UIBarButtonItem *leftBaItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"返回new2.png"] style:UIBarButtonItemStylePlain target:target action:selector];
leftBaItem.tintColor = [UIColor whiteColor];
UIBarButtonItem *spaceButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nil action:nil];
spaceButton.width = -10;
navigationItem.leftBarButtonItems = @[spaceButton,leftBaItem];
通过设置一个spaceButton ,然后设置其的宽度为负数来实现自定义返回按钮
但是在iOS11 上边无效了(==使用xcode 8 打包的app 在iOS11设备没有这个问题==)
解决办法:
//在基类中设置
UIImage *backButtonImage = [[UIImage imageNamed:@"返回new2.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
self.navigationController.navigationBar.backIndicatorImage = backButtonImage;
self.navigationController.navigationBar.backIndicatorTransitionMaskImage = backButtonImage;
2,CallKit 来电识别
在iOS 10中,苹果增加了来电识别的扩展,可以实现拦截通话或者来电显示电话号码信息
在iOS 10 里边,往系统数据写入电话号码信息时,==需要在号码前增加国际码==(==中国:86==)
在iOS 11中11位的手机号依然可以识别,但是==短号无法识别==,琢磨了半天,也没有插到任何资料有解决这个问题的,索性把==86==删掉,居然正常了
//判断系统版本是11以上
float version = [[[UIDevice currentDevice] systemVersion] floatValue];
if (version >= 11.0) {
if (phone.length<11){
tempValue = [NSString stringWithFormat:@"%@" , phone] ;
}
}
ps:==因为在xcode 9上边编译的app有各种适配问题,所以现在上线的包还是用xcode8编译打包,使用上边的判断版本的方法,其实xcode9增加了一下判断版本的方法==
//判断版本
if (@available(iOS 11.0, *)) {
}
其他:
iOS 11增加了清空垃圾识别数据的方法
/**
Remove all currently-stored identification entries.
May only be used when `-isIncremental` returns YES, indicating that the request should provide incremental entries and thus may use this
API to remove all previously-added identification entries.
*/
- (void)removeAllIdentificationEntries API_AVAILABLE(ios(11.0));
3,tabbar 高度
在iPhone X上边 tabbar 的高度为83(之前是49)
4,使用[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] 判断网络,
在iPhone X上会闪退,iPhone X的状态栏明显和其他设备不一样了,没有foregroundView
这个属性,导致找不到方法,闪退
其他待补充...