Xcode 15新特性
在 WWDC 23 上 Apple 推出了 Xcode 15,相比较 Xcode 14,它有如下的变化。
项目
-
安装包的大小继续减小,安装速度继续提升,因为 iOS 的 Components 也需要动态下载安装,否则提示
iOS 17.0 Not Install
,平台不同提示略有不同。 -
主界面的菜单图标与名称发生变化。
-
创建 iOS 项目时,增加了
Storage
选项,不再有Use Core Data
选项。 -
导航区的第三个菜单 Symbol navigator 替换为 Bookmark navigator。
-
调试区的菜单发生变化,并且输出的内容随着不同的级别拥有不同的背景色。
-
Archive 时的 Distribute App 界面发生变化。
功能
-
Assets 中的创建的
Image Set
与Color Set
可以生成类型安全的标识符,在程序中可以.标识符
的形式访问。
struct ContentView: View {
var body: some View {
VStack {
Color(.colorSet) // Color Set
Image(.imageSet) // Image Set,只是新建不行,还必须有图片
}
.padding()
}
}
-
UIKit、AppKit 与 WidgetKit 均可以通过宏(macro)
#Preview
实现类似 SwiftUI 的实时预览。
// UIKit
#Preview {
UIKit 预览内容,可以是 UIView 或者 UIViewController
}
// AppKit
#Preview {
AppKit 预览内容,可以是 NSView 或者 NSViewController
}
// WidgetKit
#Preview(as: 预览尺寸) {
Widget
} timeline: {
TimelineEntry
}
-
增加 Documentation Preview,文档也支持预览。
-
代码支持添加 Bookmark,在某一行代码或者选中多行代码,然后右击,可以看到相应的添加菜单。可以在 Bookmark navigator 中查看添加的所有 Bookmark。
-
条件编译代码随着选择的条件会高亮显示对应条件的编译代码。
-
右击菜单 Show Quick Help 可以显示更加丰富的文档内容。
-
编辑代码时 Quick Actions 可以快捷访问对应内容的所有菜单,快捷键
command + shift + A
。 -
遇到多参数的方法时,可以通过键盘方向键 —> 显示所有可能的参数组合。
-
编辑完多参数的方法后,如果觉得格式不适合阅读,可以通过右击 Refactor —> Format to Multipl Lines 进行格式化。
-
代码提示功能进一步增强。
iOS 17适配要点
同样在 WWDC 23 上 Apple 发布了 iOS 17,推出了很多新的内容。
-
增加了 UIContentUnavailableView,UIView 与 UIViewController 都可以设置数据为空时的占位视图。
-
UIFont.TextStyle 增加了新的超大字体样式
extraLargeTitle
与extraLargeTitle2
。 -
UIImageView 支持显示 HDR 图片。
-
UIImageView 增加了 Symbol Animations,通过
addSymbolEffect()
与removeSymbolEffect()
方法可以实现 SF Symbols 图标的添加与移除动画。 -
UIButton 也增加了 Symbol Animations,使得按钮中使用的 SF Symbols 图标可以呈现动画。
-
UITextField 增加了新的
birthdate
与creditCard
相关的 textContentType。 -
UIPageControl 增加了类型为 UIPageControlTimerProgress 的参数
progress
,可以根据指定的时间自动切换。 -
UICollectionView 效率大幅提升。
-
UICollectionViewCompositionalLayout 中的 NSCollectionLayoutSize 增加了一个新的描述方法
uniformAcrossSibling()
,可以根据内容自适应布局。 -
UIMenu 与 UIAction 增加了新的构造方法,可以设置更多内容。
-
UIMenu 增加了新的显示模式
displayAsPalette
。 -
UIViewController 增加了新的生命周期函数
viewIsAppearing()
,调用时机介于viewWillAppear()
与viewDidAppear()
之间,并且兼容到 iOS 13。 -
弹簧动画增加了新的专属 API。