Xcode 13.2 beta 发布,Swift 这个更新太赞了
苹果在 10 月 27 号 发布了 Xcode 13.2 beta 版本,这个版本最受开发者欢迎的无疑是 Swift Concurrency 的向后兼容性了,现在可以在部署到 macOS 10.15、iOS 13、tvOS 13 和 watchOS 6 或更高版本的应用程序中使用 Swift Concurrency。这种支持包括异步/等待、参与者、全局参与者、结构化并发和任务 API。
当然,除了这一条外,还有其它的一些更新,一起来看看。
Large Content Viewer
VStack {
Button("Tap me") { print("Button Tapped") }
.accessibilityShowsLargeContentViewer()
Button("Tap me 2") { print("Button Tapped") }
.accessibilityShowsLargeContentViewer {
Text("A different text")
}
}
Large Content Viewer 是自 iOS 13 以来一直存在的辅助功能。
简而言之,当启用可访问性动态类型大小时,它允许我们通过系统 HUD 放大/突出显示用户悬停的 UI 元素。
使用 Xcode 13.2,我们现在也可以将它与 SwiftUI 一起使用。
除了示例中显示的两个视图修饰符之外,SwiftUI 现在还带有一个新的 accessibilityLargeContentViewerEnabled 环境变量,可用于我们需要更改某些手势行为以适应此辅助功能的情况。
视图修饰符和环境变量均可从 iOS 15.0、macOS 12.0、tvOS 15.0、watchOS 8.0 获得。
文档
虽然 Xcode 13.2b1 没有带来许多新的 SwiftUI 功能,但苹果在 SwiftUI 的文档中进行了重大且受欢迎的升级。
新文档可用于:
SectionedFetchRequest
SectionedFetchResults
Text
TextField
ToggleStyle
toggleStyle(_:)
ToggleStyleConfiguration
ToggleStyle.automatic
所有最近的 background 和 overlay 视图修改器
让我们重点介绍一些重要的变化。
TextField 的 prompt 与 title
更新后的 TextField 文档有一整节解释为什么我们有标题/标签和提示参数,以及两者的使用:
/// Each text field style determines where and when the text field uses a prompt and label.
/// For example, a form on macOS always places the label at the leading edge of the field
/// and uses a prompt, when available, as placeholder text within the field itself. In the
/// same context on iOS, the text field uses either the prompt or label as placeholder
/// text, depending on whether the initializer provided a prompt.
(Toggle) 样式默认值和上下文默认值
SwiftUI 的样式具有很强的适应性,可以根据上下文进行广泛的更改。之前大家都在猜测在哪些场景中采用了哪种风格(并且只能通过实验来回答)。
在这次更新之后,不再需要猜测,因为文档清楚地说明了我们的 Toggle 在不同场景中的显示方式。
一些措辞的变更:从“primitive”到“build-in”
当提到视图、样式、命令等的内置 SwiftUI 定义时,官方措辞是“primitive”。
然而,术语“primitive”并不总是正确的,因为有时,甚至内置定义也由其他 SwiftUI 组件组成。为了解决这个问题,文档已将措辞从“primitive”更改为“build-in”。
更大胆的弃用
尽管 SwiftUI 对使用哪种语法有明确的指导,但大多数旧定义仍然可用,并且被弃用,并带有诸如“您也可以使用 X”之类的温和消息。Xcode 13.2 中的新功能,这些消息更加粗体,并使用命令式词来指导开发人员使用什么。
通用
Xcode 13.2 beta 包括对使用 Swift Playgrounds 4 创建的应用项目的支持。
Metal
TextureConverter 1.1 添加了对在构建期间解压缩纹理的支持。还可以使用 TextureConverter 作为独立工具在构建过程之外解压缩纹理。要使用,请使用
--decompressed
选项设置解压缩文件的文件路径。TextureConverter 1.1 添加了对错误度量的支持。设置
--metrics
选项在压缩时计算,或使用 --compare 计算两个纹理文件之间的误差。当输出纹理是最新的时,TextureConverter 1.1 添加了对跳过压缩的支持。使用
--check_date
选项比较输入和输出纹理的修改日期和时间。使用--check_details
选项比较用于压缩的 TextureConverter 版本和使用的压缩选项(仅限 KTX 文件)。
Organizer
添加了对智能洞察通知的支持。在您的应用程序中监控电源和性能回归时接收通知。单击 Xcode Organizer 的 Regressions 视图右上角的钟形图标以启用通知。
小结
Swift Concurrency 的向后兼容性无疑是本次更新最大的亮点,借助这一能力,开发者可以更高效去处理并发问题。关于 Xcode 13.2 beta 版本更多信息,可以参考 Xcode 13.2 Beta Release Notes , https://developer.apple.com/documentation/xcode-release-notes/xcode-13_2-release-notes