WWDC Quick Look 💓 By SwiftGGTeam
Wednesday@WWDC21

Wednesday@WWDC21

观看原视频

Highlight

WWDC21 第三天聚焦 AR 摄影测量、Shortcuts Action 设计、UIKit 样式系统、Apple Watch 无障碍创新、Vision 框架人物分割、iCloud Keychain 验证码生成器,以及可发现性设计原则。

核心内容

周三的 WWDC21 回顾串起了一系列具体的技术更新,每个都直接回应开发者的实际需求。

AR 领域:Object Capture 让开发者用几十张照片就能生成 3D 模型,不用再请外包建模师。适合电商产品展示、AR 菜单、虚拟试穿等场景。

Shortcuts 和 Siri:Action 设计指南告诉你应该暴露哪些应用功能、如何设计参数,让用户通过语音和快捷指令更自然地使用你的应用。

UI 框架更新:UIKit 新的 UIButton.ConfigurationcontentConfiguration 让按钮和单元格样式配置更声明式,同时 Interface Builder 支持预览不同辅助功能设置下的效果。

无障碍创新:Apple Watch 的 AssistiveTouch 通过传感器组合和机器学习检测手臂微动作,让上肢障碍用户通过手势完全控制手表。这是一个”为少数人设计、惠及所有人”的典型案例。

Vision 框架:Person Segmentation API 可以把人物从背景中分离出来,实现虚拟背景、人物抠图。同时人脸检测支持戴口罩,姿态指标从离散值改为连续值。

安全认证:iCloud Keychain 内置 TOTP 验证码生成器,支持一键设置、自动填充、跨设备同步,比 SMS 更安全可靠。

设计原则:可发现性设计通过视觉暗示、渐进式披露、一致交互和反馈闭环,让用户自然发现应用功能。

详细内容

Object Capture:用照片生成 3D 模型

00:08

传统 3D 建模需要专业软件和技能,周期长、成本高。Object Capture 用摄影测量技术从照片恢复 3D 结构。

API 入口是 PhotogrammetrySession

import RealityKit

let inputFolderUrl = URL(fileURLWithPath: "/tmp/Sneakers/", isDirectory: true)
let session = try! PhotogrammetrySession(
    input: inputFolderUrl,
    configuration: PhotogrammetrySession.Configuration()
)

关键点:

  • 照片可以是 iPhone、iPad、单反或无人机拍摄
  • HEIC 格式照片会自动提取深度数据
  • 支持 Reduced、Preview、Reduced、Raw 四种精度级别

处理异步输出流:

Task {
    do {
        for try await output in session.outputs {
            switch output {
            case .requestProgress(let request, let fraction):
                print("Request progress: \(fraction)")
            case .requestComplete(let request, let result):
                if case .modelFile(let url) = result {
                    print("Request result output at \(url).")
                }
            case .processingComplete:
                print("Completed!")
            default:
                break
            }
        }
    } catch {
        print("Fatal session error! \(error)")
    }
}

关键点:

  • for try await 持续接收消息,直到 session 释放
  • .requestProgress 可以驱动进度条
  • .requestComplete 返回模型文件 URL

Shortcuts Action 设计

00:13

好的 Action 具备五个特质:有用、模块化、多模态、清晰、可发现。

有用:解决用户实际问题,如日历的”添加事件”、邮件的”发送消息”。

模块化:输入输出设计通用,一个 Action 的输出可以作为下一个 Action 的输入。

多模态:同一个 Action 可以在 Shortcuts 拖拽、Siri 语音、系统建议中使用。

清晰:名称用动词开头,参数标签准确描述内容。

可发现:在应用内教育用户,捐赠 Intent 让系统学习,提供示例 Shortcuts。

UIKit 样式系统

00:22

iOS 15 引入 UIButton.Configuration

var config = UIButton.Configuration.filled()
config.title = "Continue"
config.image = UIImage(systemName: "arrow.right")
config.imagePlacement = .trailing
config.cornerStyle = .capsule

let button = UIButton(configuration: config)

单元格 contentConfiguration

var content = cell.defaultContentConfiguration()
content.text = "Title"
content.secondaryText = "Subtitle"
content.image = UIImage(systemName: "star")

cell.contentConfiguration = content

关键点:

  • Configuration 是值类型,修改后需重新赋值
  • 自动适配 Dynamic Type 和辅助功能设置
  • Interface Builder 可预览不同辅助功能设置下的效果

Apple Watch 无障碍功能

00:37

AssistiveTouch 结合三个传感器检测手臂微动作:

  • 加速计(检测手臂运动)
  • 陀螺仪(检测手腕旋转)
  • 心率传感器(检测血流变化)

手势包括捏合、双捏合、握拳、双握拳,通过机器学习模型与日常运动区分。

关键点:

  • 不需要新硬件,组合现有传感器即可实现
  • 低影响手势设计,减少能量消耗
  • 四个手势可实现完整操作:导航、选择、滚动、返回

Vision 框架人物分割

00:48

Person Segmentation API:

let request = VNGeneratePersonSegmentationRequest()
let requestHandler = VNImageRequestHandler(url: imageURL, options: options)

try requestHandler.perform([request])

let mask = request.results!.first!
let maskBuffer = mask.pixelBuffer

质量级别:

  • accurate:最高质量,适合计算摄影
  • balanced:平衡,适合逐帧视频处理
  • fast:最快,适合实时流处理

人脸检测支持戴口罩,姿态指标(roll、yaw、pitch)从离散值改为连续值。

iCloud Keychain 验证码生成器

00:55

iOS 15 将 TOTP 验证码生成器内置到 iCloud Keychain。

支持一键设置:

// 在 App 中
func openVerificationCodeSetup(url: URL) {
    if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
        scene.open(url, options: nil, completionHandler: nil)
    }
}

// 在网页中
// <a href="apple-otpauth://totp/Example?secret=...&issuer=example.com">设置验证码</a>

关键点:

  • otpauth:// URL 加上 apple- 前缀直接打开 iCloud Keychain
  • 验证码自动填充,与 SMS 验证码体验一致
  • 跨设备同步,安全备份在 iCloud 中

可发现性设计

01:07

可发现性设计通过四个原则让用户自然发现功能:

视觉暗示:主操作用高对比度颜色,新功能用徽章或动画提示。

渐进式披露:先展示基本功能,高级功能在需要时才出现。长按、滑动等手势揭示更多操作。

一致交互:遵循系统标准交互模式,如下拉刷新、左滑删除。

反馈闭环:每个操作都有即时反馈,让用户确认”我做对了”。

核心启发

  1. 电商产品可视化:用 Object Capture 为商品生成 3D 模型,在 AR Quick Look 中展示,让用户在家就能看到产品真实尺寸和细节
  2. 语音优先的应用流程:为高频操作设计 Shortcuts Action,让用户不用打开应用就能完成任务,结合 Siri 实现全语音操作
  3. 虚拟背景和人物抠图:用 Vision 的 Person Segmentation 实现视频通话虚拟背景、照片编辑人物抠图,无需第三方 SDK
  4. 无障碍设计的普适价值:AssistiveTouch 最初为上肢障碍用户设计,但其手势控制方式可以惠及所有用户,如运动场景下单手操作
  5. 更安全的认证流程:用 iCloud Keychain 验证码替代 SMS,降低成本的同时提升安全性,端到端加密保证验证码不会泄露

关联 Session

评论

GitHub Issues · utterances