【技术】iOS13新特性及问题整理

1.前言

最近公司的App要做兼容iOS13的工作,于是收集整理了一下iOS13与开发相关的新特性,以及在做兼容过程中遇到的一些问题;记录一下方便自己日后查找使用。

【技术】iOS13新特性及问题整理_第1张图片
2.iOS13新特性

1、App Store的应用程序将会提供新的压缩模式,应用体积和更新体积将会变得更小,应用体积减少60%,这意味着更快的应用更新速度。

2、允许通过蜂窝数据下载大型应用。

3、允许直接将网页保存为PDF并通过邮件共享。

4、原生支持Zip文件的创建以及解压缩。

5、文件应用提供了下载文件夹,其中会存放使用Safari以及邮件应用下载的附件。

6、网站或者应用登陆时提供“使用Apple登陆”的选项,此时用户会默认使用Apple ID登陆,并会提供两步验证的安全保障,Apple登陆支持Android以及Windows平台。

7、在用户使用Safari创建新网站账号时,Safari会自动检测用户的密码强度,并提出强度建议。

8、iOS 13原生应用启动速度提升100%。

9、iPhone X、iPhone XS、iPhone XS Max以及iPhone XR的Face ID解锁速度提高 30% 。

10、在应用询问位置权限时,提供“仅一次”的选项。

3.iOS13问题 (iOS Beta版)

在iOS 13之前,我们模态展示的视图默认是全屏的,而在iOS13中,默认的样式变成了类iPhone上safari的分页样式(上下分层) 如下图:

【技术】iOS13新特性及问题整理_第2张图片

在使用 presentViewController 来跳转视图时系统提供了两个参数来简化跳转的设置,modalTransitionStyle 和modalPresentationStyle前者为转场过渡的类型,后者为展示的样式,系统为两者都提供了多种可选样式。

modalPresentationStyle在iOS13前该值默认为UIModalPresentationFullScreen;而在 iOS13 中变为了UIModalPresentationAutomatic,因此会导致如上问题。

解决方法:在presentViewController的时候将控制器modalPresentationStyle设置为UIModalPresentationFullScreen 即
vc.modalPresentationStyle = UIModalPresentationFullScreen

4.iOS13 上IQKeyboardManager库Toolbar 错位上移问题

正是由于为了兼容iOS13 hook 了 UIViewController 并且设置 modalPresentationStyle = UIModalPresentationFullScreen 造成 keychain 的密码弹框 UIKeyboardHiddenViewController_Autofill 也设置为 UIModalPresentationFullScreen 因此导致了此问题,加上 [viewControllerToPresent isKindOfClass:[UINavigationController class]] 判断即可解决此问题。

if([viewControllerToPresent isKindOfClass:[UINavigationController class]]) {
   viewControllerToPresent.modalPresentationStyle = UIModalPresentationFullScreen;
}

目前就整理到这些问题,后续再遇到问题再补充。

你可能感兴趣的:(【技术】iOS13新特性及问题整理)