一、iOS15新特性

1.1、iOS15兼容的设备

9.21  iOS15.0正式版

iPhone6S以上,包括SE第一/二代,iPod touch第七代

具体6s、6sPlus、7、7Plus、8、8plus、X、XR、XsMax、Xs、11、11Pro、11ProMax、12、12Pro、12ProMax、12mini、13、13Pro、13ProMax、13mini

1.2、iOS15新特性

专注模式,就是确保用户在一个时间段里屏蔽各种骚扰、非必要的内容不看不听,来提升做其他事情的效率。苹果做了各种细致分类,能进行量身定制。

NFC增强版 NFC能模拟公交卡、门禁卡等,能把手机强化为卡证管理平台,在中高端安卓手机很普及。苹果的NFC功能限制非常多,要与指定的开发商合作才能启用,故实用性低。

看图识字 图中文字能提取出来进行复制分享。

FaceTime 提供人物虚化功能、麦克风选收听人声或全场景声

二、iOS15适配

Xcode13编译工程后,问题:

2.1、NavigationBar

问题:导航栏问题比较明显,有的变白色,有的变黑色。(我们项目里有navigationBar原本白色现在变成灰色)

原因:UINavigationBar 部分属性的设置在 iOS15 上是无效的。

解决办法:查看导航栏API,iOS15的导航栏属性需用UINavigationBarAppearance(iOS13更新的API)来实现。

swift

        if #available(iOS 13.0, *) {let appearance = UINavigationBarAppearance()// 设置导航栏背景色appearance.backgroundColor = .white// 去除导航栏阴影(如果不设置clear,导航栏底下会有一条阴影线)appearance.shadowColor = UIColor.clear// 字体颜色appearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]// 带scroll滑动的页面navigationController?.navigationBar.scrollEdgeAppearance = appearance// 常规页面navigationController?.navigationBar.standardAppearance = appearance }

Objective-C

    if (@available(iOS 13.0, *)) {UINavigationBarAppearance * appearance = [[UINavigationBarAppearance alloc] init];// 背景色appearance.backgroundColor = [UIColor whiteColor];// 去除导航栏阴影(如果不设置clear,导航栏底下会有一条阴影线)appearance.shadowColor = [UIColor clearColor];// 字体颜色appearance.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor redColor]};// 带scroll滑动的页面self.navigationController.navigationBar.scrollEdgeAppearance = appearance;// 常规页面self.navigationController.navigationBar.standardAppearance = appearance;}

对NavigationBar是白底黑字的app影响不大

2.2、UITabBar

背景色失效 (这个问题在我们项目里其中一个tab下存在)

swift

        if #available(iOS 13.0, *) { let appearance = UITabBarAppearance()// 背景色appearance.backgroundColor = .whitetabBar.standardAppearance = appearanceif #available(iOS 15.0, *) {tabBar.scrollEdgeAppearance = appearance}}

Objective-C

    if (@available(iOS 13.0, *)) { UITabBarAppearance * appearance = [[UITabBarAppearance alloc] init];// 背景色appearance.backgroundColor = [UIColor whiteColor];self.tabBar.standardAppearance = appearance; if (@available(iOS 15.0, *)) {self.tabBar.scrollEdgeAppearance = appearance;}}

2.3 TableView

问题:a).初始化 UITableView用UITableViewStylePlain样式,发现 sectionHeader 增高了 22px

(这个问题在我们项目里也是有遇到的)

原因:iOS 15 的 UITableView 新增了一条新属性:sectionHeaderTopPadding, 默认会给每一个 sectionHeader 增加一个高度

解决办法:

swift代码if #available(iOS 15.0, *) {tableView.sectionHeaderTopPadding = 0}
Objective-C代码if (@available(iOS 15.0, *)) { tableView.sectionHeaderTopPadding = 0;}

b).初始化 UITableView用UITableViewStylePlain样式,默认不显示灰色,上滑置顶时最上面的sectionHeader才有颜色。

解决办法:在viewForHeaderInSection代理方法返回自带灰色的section header

2.3.2、a)设置 tableHeaderView 后,底部会增加一段高度 (需验证)

解决方案:在设置tableHeaderView时同时设置一个高度为0.01的tableFooterView即可:

tableView?.tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 0.01))

b)storyboard里的tableView,适配屏幕尺寸改tableHeaderView高度,调layoutIfNeeded不生效,只高度改了,布局没改。

DispatchQueue.main.asyncAfter(deadline: .now() + 0.05) {
if let headerView = self.tableView?.tableHeaderView, let lastSubView = headerView.subviews.last {
if #available(iOS 15.0, *) {
headerView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: lastSubView.frame.origin.y + lastSubView.frame.size.height)
self.tableView?.tableHeaderView = headerView} else {
self.tableView?.tableHeaderView?.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: lastSubView.frame.origin.y + lastSubView.frame.size.height)
self.tableView?.tableHeaderView?.layoutIfNeeded()}}
}

2.4、UILabel

2.4.1、 NSBaselineOffsetAttributeName属性的值导致虽然约束没有问题但label内的文字位置不对

(这个问题在我们项目里有遇到的)

现在是以控件最上面的线为基准的偏移。所以用到这个属性的可以检查下。

2.4.2、NSMutableParagraphStyle的lineSpacing属性失效 解决办法加上换行符 \b或\n等

Xcode12打的包在iOS15显示无效,而Xcode13打的包在iOS15有效

if (@available(iOS 15,*)) {

NSAttributedString *placeholderChractor = [[NSAttributedString alloc] initWithString:@"\b"];

[as insertAttributedString:placeholderChractor atIndex:0];

}

[as addAttributes:@{NSParagraphStyleAttributeName: style} range:NSMakeRange(0, as.length)];

(这个问题在我们项目里有遇到的)

2.4.3、增加高度解决

iOS15计算的正好显示完Label文字高度,在IOS15显示不全,增加高度可解决。设置adjustsFontSizeToFitWidth为true时,高度不能与设置的font一样大,增加高度即可。(应该是Beta的问题 目前看正式版已修复)

2.5、检查用到的第三方库

如:第三方播放器框架ZFPlayer横屏出现问题,没有正确渲染布局,且无法切回竖屏页面
有几率闪退。第三方BRPickerView文字选择器内容布局错误。Facebook的跨平台框架React中的fishhook闪退。

解决办法:修改源码或看作者有没有适配

修改fishhook.c源码,参考https://github.com/facebook/fishhook/issues/85 中的XuweiQT的方案,将链接中的fishhook.c替换项目中fishhook.c文件

2.6、H5在WKWebView的显示问题

部分链接在iOS15的WKWebView、微信、QQ、Safari中出现空白页about:blank

(应该是Beta的原因,目前正式版没有遇到)

以上iOS15正式版有的适配问题,除NSMutableParagraphStyle的lineSpacing属性失效问题,和标记为Beta的外,其他用Xcode12编译打的包在IOS15设备使用不出现,而用Xcode13编译会出现问题

参考以下文章,感谢

iOS15新特性、iOS15适配相关推荐

  1. Android 13 新特性及适配指南

    Android 13(API 33)于 2022年8月15日 正式发布(发布时间较往年早了一些),正式版Release源代码也于当日被推送到AOSP Android开源项目. 截止到笔者撰写这篇文章时 ...

  2. iOS 11新特性与适配

    iOS 11新特性与适配 1. UIView变化 1.1. 更加方便的RTL边距设置 1.2. 安全区域 2. UIViewController变化 2.1. 废除API 2.1.1. `automa ...

  3. iOS9的新特性以及适配方案

    1. 限制HTTP协议,全部改用更安全的HTTPS iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输.直接造成的情况就是App发请求的时候弹出网络无法 ...

  4. Android8.0、9.0、10.0、11.0的新特性兼容适配代码修改

    <Android Studio开发实战 从零基础到App上线(第2版)>在书后面的附录中给出了Android8和Android9的主要特性说明,附录表格如下图所示: 不过附录表格只涵盖了常 ...

  5. [IOS]IOS10新特性以及适配点(转)

    iOS 10 新特性以及适配点 SiriKit 所有第三方应用都可以用Siri,支持音频.视频.消息发送接收.搜索照片.预订行程.管理锻炼等 Proactive Suggestions 系统预先建议 ...

  6. Android12 新特性及适配指南

    Android 12(API 31)于2021年10月4日正式发布,正式版源代码也于当日被推送到AOSP Android开源项目.截止到笔者撰写这篇文章时,国内各终端厂商的在售Android设备,已经 ...

  7. Android Q 存储新特性适配脑壳疼?指南来了!

    码个蛋(codeegg)第 692 次推文 原文: https://mp.weixin.qq.com/s/aiDMyAfAZvaYIHuIMLAlcg 简单回顾下:Android Q 适配 之 存储新 ...

  8. iOS 9 的新特性

    2015年9月8日,苹果宣布iOS 9操作系统的正式版在太平洋时间9月16日正式推出,北京时间9月17日凌晨1点推送. 新的iOS 9系统比iOS8更稳定,功能更全面,而且还更加开放.iOS 9加入了 ...

  9. iOS -- iOS11新特性,如何适配iOS11

    前言 这几天抽空把WWDC的Session看了一些,总结了一些iOS11新的特性,可能对我们的App有影响,需要我们进行适配.本文作为一个总结. 本文内容包括:集成了搜索的大标题栏.横向选项卡栏.Ma ...

  10. android屏幕适配的五种方式_讲一讲Android 9.0系统的新特性,对刘海屏设备进行适配...

    黑客技术点击右侧关注,了解黑客的世界! Java开发进阶点击右侧关注,掌握进阶之路! Python开发点击右侧关注,探讨技术话题!作者丨郭霖来源丨郭霖(guolin_blog) 其实Android 9 ...

最新文章

  1. [微信小程序]计算自己手机到指定位置的距离
  2. WPF学习拾遗(二)TextBlock换行
  3. Java动态excel模板
  4. 通过Zookeeper动态感知服务器上下线[案例]
  5. 大象狂奔,地表最强大的投行高盛摩根转型
  6. 350店铺装修激活码发放 免费领取店铺装修模板
  7. 1110 Complete Binary Tree (25 分)【难度: 一般 / 知识点: 判断完全二叉树】
  8. 移动web app开发必备 - 异步队列 Deferred
  9. SSHF备忘之依赖包(struts2+spring2.5+hibernate+freemarker)
  10. 传递子类 java_Java,将主类传递给子类,错误的编码风格?
  11. 机器学习中回归问题的性能衡量指标
  12. ElasticSearch多字段查询best_fieldsmost_fields
  13. pwm控制舵机转动角度程序_舵机的内部结构及工作原理
  14. 基于DWM1000的UWB测距调试(二)
  15. 二级计算机中一级标题设置,如何编辑目录中一级标题二级标题的不同格式
  16. 信息检索与利用(第三版)第一章
  17. 网页截图怎么截一整张_如何对整个网页页面进行截图
  18. 域名系统(Domain Name System,DNS)
  19. 从零开始修炼电脑维修秘籍
  20. 简单的程序诠释C++ STL算法系列之八:mismatch

热门文章

  1. 达观数据荣获认知图谱产业建设“创新突破奖”,并与图谱知名专家共同探讨工业知识图谱应用落地
  2. 今天给大家分享下收集的一些文案:日常文案系列合集,收藏备用
  3. hihoCoder1378:网络流二·最大流最小割定理
  4. WiFi覆盖下的生活 享受便利的同时 别忘记了安全
  5. cad断点快捷键_CAD打断(BREAK)命令的使用技巧
  6. 服务器win7无限重启,win7系统无限重启的解决方法
  7. BZOJ 1189: [HNOI2007]紧急疏散evacuate|网络流|二分答案
  8. python输入一个包含若干自然数的列表_Python练习题
  9. SQL Transformation
  10. java实现微信定时发送消息