又是一年一度的苹果大版本更新啦
最近IOS大版本苹果发布后,由于苹果升级Xcode以及IOS13新功能属性进行变动,用Xcode11进行编译时导致我们的APP在IOS13以上版本运行时目前发现的问题总结了几点:
一.友盟iOS13报错([_LSDefaults sharedInstance]: unrecognized selector sent to class)。
因友盟老版本SDK未做升级,没有适配IOS13,导致崩溃。
解决方案:这个报错友盟已经提示了,需要把UMCCommon更新到最新版本2.1.1。
二、私有KVC
- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath在Xcode10上编译不会有问题,但是在Xcode11上编译的会崩溃。并且- (void)setValue:(nullable id)value forKey:(NSString *)key方法没问题,- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath会崩溃
解决方案:更换方法。- (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath更换为- (void)setValue:(nullable id)value forKey:(NSString *)key
三、presentViewController跳转不占全屏
会出现这种情况是主要是因为我们之前对UIViewController里面的一个属性,即modalPresentationStyle(该属性是控制器在模态视图时将要使用的样式)没有设置需要的类型。在iOS13中modalPresentationStyle的默认改为UIModalPresentationAutomatic,而在之前默认是UIModalPresentationFullScreen。
这个不受Xcode版本的影响,只要是iOS13的系统,没有显式设置modalPresentationStyle,就会有这个问题。
解决方法:设置modalPresentationStyle为0.目前涉及到了所有二级页面都会出现这个问题。
具体代码:
WHelpController *newDL =[[WHelpController alloc]init];
newDL.modalPresentationStyle = 0;
[self presentViewController:newDL animated:NO completion:nil];
四、即将废弃的 LaunchImage
从 iOS 8 的时候,苹果就引入了 LaunchScreen,我们可以设置 LaunchScreen来作为启动页。当然,现在还可以使用LaunchImage来设置启动图。不过使用LaunchImage的话,要求我们必须提供各种屏幕尺寸的启动图,来适配各种设备,随着苹果设备尺寸越来越多,这种方式不够 Flexible。而使用 LaunchScreen的话,会变的很简单, LaunchScreen是支持AutoLayout+SizeClass的,所以适配各种屏幕都不在话下。 ⚠️,从2020年4月开始,所有使⽤ iOS13 SDK 的 App 将必须提供 LaunchScreen,LaunchImage即将退出。
五、暗黑模式
原理
1.将同一个资源,创建出两种模式的样式。系统根据当前选择的样式,自动获取该样式的资源
2.每次系统更新样式时,应用会调用当前所有存在的元素调用对应的一些重新方法,进行重绘视图,可以在对应的方法做相应的改动
在开发中,如果用的系统控件(如cell、tableview的背景色)未设置背景色(或者为透明),则进入暗黑模式后,控件背景色变为黑色。
可以每一个页面设置,也可以整体设置。
之前苹果只有一种模式,导致现在IOS13上线后,在新模式-暗黑模式下UI出现异常显示。
解决方案:1.APP强制关闭暗黑模式,在配置文件环境中进行设置,默认APP使用原有样式,用户操作不会影响APP展示效果。
2.APP适配暗黑模式,这个对于一般的APP适配量比较大。
六.第三方登录
苹果更新的审核规范中提到使用第三方登录的APP必须要将apple登录作为一个可选择项
Sign In with Apple will be available for beta testing this summer. It will
be required as an option for users in apps that support third-party
sign-in when it is commercially available later this year.
另:Xcode11更新后才会出现以上问题,如果用Xcode10不会出现适配问题。
目前发现的就这六个问题,欢迎各位提供其它问题,及时发现并解决问题。
欢迎有问题在评论区留言,我们一起解决。