1.不升级电脑系统与 Xcode,调试iOS 16
1、下载iOS16 Support文件
2、放置到Xcode DeviceSupport目录重启Xcode即可/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
2.iOS16手机开启开发者模式
iOS16手机未打开开发者模式时:
1、Xcode 无法选中 iOS16的设备,报错:developer mode disable
解决办法:打开调试手机-设置-隐私与安全-开发者模式-开启开发者模式(需要重启手机)
3.Pod工程中的Bundle target签名报错
方法一:手动选择Pod工程中的Bundle target 签名中的Team,与主工程一致
方法二:在Podfile脚本中设置你的开发者的Team ID
post_install do |installer|
installer.generated_projects.each do |project|
project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings["DEVELOPMENT_TEAM"] = "Your Team ID"
end
end
end
end
方法三:在Podfile脚本中设置CODE_SIGN_IDENTITY为空来避免报错
post_install do |installer|
installer.generated_projects.each do |project|
project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['CODE_SIGN_IDENTITY'] = ''
end
end
end
end
4. UICalendarView
新增 UICalendarView,可以显示日期并支持单选与多选日期
5. UIPasteControl
新增 UIPasteControl 用于读取剪贴板中的内容,否则跨 App 读取时会弹出对话框让用户进行选择是否同意
6. UIEditMenuInteraction
新增一个交互 UIEditMenuInteraction,用于取代 UIMenuController 与 UIMenuItem。
7.UIFindInteraction
新增一个交互 UIFindInteraction 用于文本内容查找与替换。
8. LARightStore
LARightStore 用于存储与获取 keychain 中的数据。
9.UIImage
UIImage 增加了新的构造函数用于支持 SF Symbols 最新版中增加的类别 Variable。
10.UIPageControl
UIPageControl 支持垂直显示并可以设置指示器与当前页的图片
11.UITableView , UICollectionView
1.UITableView 与 UICollectionView 在使用 Cell Content Configuration 时支持使用 UIHostingConfiguration 包装 SwiftUI 代码定义 Cell 的内容。
cell.contentConfiguration = UIHostingConfiguration {
HStack {
Image(systemName: images[indexPath.row])
.foregroundStyle(.teal)
Text(devices[indexPath.row])
.font(.caption)
.foregroundStyle(.secondary)
}
}
2.UITableView 与 UICollectionView 增加了新的selfSizingInvalidation参数,通过它 Cell 具备自动调整大小的能力。
12.UINavigationItem
UINavigationItem 增加了一个属性style用于描述 UINavigationItem 在 UINavigationBar 上的布局;增加了一个属性backAction用于实现当前 UIViewController 的返回按钮事件;增加了一个属性titleMenuProvider用于给当前导航栏的标题添加操作菜单。
13.UISheetPresentationController
UISheetPresentationController 支持自定义显示的 UIViewController 的大小
14.UIMenu 支持设置尺寸,分别为small、medium与large。
let addNewMenu = UIMenu(title: "", preferredElementSize: .small, children: menuActions)
15.隐私权限增强
隐私权限增强,如通过 UIDevice 获取设备名称时,无法获取用户的信息,只能获取设备对应的名称。
16.UIDevice
UIDevice 不再支持通过setValue()方法设置设备的方向,替换为 UIWindowScene 的requestGeometryUpdate()方法。
17. Live Activity
支持 Live Activity,可以理解为一种特殊的锁屏界面显示的 Widget。
18.UIFont
增加了 3 种新的宽度样式:compressed、condensed与expanded,加上默认的standard,目前 UIFont 共有 4 种字体宽度。宽度大小关系为:expanded>standard>condensed>compressed
// Created by YungFanimportUIKitclassViewController:UIViewController{// 定义4种宽度不同的字体let expanded =UIFont.systemFont(ofSize:27, weight:.bold, width:.expanded)let standard =UIFont.systemFont(ofSize:27, weight:.bold, width:.standard)let condensed =UIFont.systemFont(ofSize:27, weight:.bold, width:.condensed)let compressed =UIFont.systemFont(ofSize:27, weight:.bold, width:.compressed)lazyvar expandedLabel:UILabel={let label =UILabel(frame:CGRect(x:10, y:100, width:360, height:40))
label.text ="Xcode14 and iOS16"
label.font = expanded
return label
}()lazyvar standardLabel:UILabel={let label =UILabel(frame:CGRect(x:10, y:150, width:360, height:40))
label.text ="Xcode14 and iOS16"
label.font = standard
return label
}()lazyvar condensedLabel:UILabel={let label =UILabel(frame:CGRect(x:10, y:200, width:360, height:40))
label.text ="Xcode14 and iOS16"
label.font = condensed
return label
}()lazyvar compressedLabel:UILabel={let label =UILabel(frame:CGRect(x:10, y:250, width:360, height:40))
label.text ="Xcode14 and iOS16"
label.font = compressed
return label
}()overridefuncviewDidLoad(){super.viewDidLoad()
view.addSubview(expandedLabel)
view.addSubview(standardLabel)
view.addSubview(condensedLabel)
view.addSubview(compressedLabel)}}
每个更新点的具体变化案例可参考https://www.jianshu.com/nb/49167696