IOS 中什么是 3D Touch?如何使用?代码举例讲解

3D Touch 是 iPhone 6s 及以后的屏幕一种能检测的压力按下强度的技术。它可以检测不同的按压力度并触发响应的操作。

使用 3D Touch 的基本步骤:

  1. 在 Info.plist 中打开 3D Touch 能力:
xml
<key>UIRequiresFullScreen</key>  
<true/>
<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>task_assist</string>
    <string>task_ambSM</string> 
</array>
  1. 实现 UITraitCollection 的 previewForTraitCollection(_:) 方法来检查设备是否支持 3D Touch。
  2. 添加recognizer,通常使用 UILongPressGestureRecognizer 来检测不同的按压力度。
  3. 根据 recognizer 的 state 和 force 值来相应地执行不同的操作。
  4. 添加Peek和Pop手势来提供快速预览和展开的体验(可选)。

下面是一个简单示例:

swift
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    if traitCollection.forceTouchCapability == .available {
        let longPress = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress(recognizer:)))
        view.addGestureRecognizer(longPress)
    } 
}

@objc func handleLongPress(recognizer: UILongPressGestureRecognizer) {
    switch recognizer.state {
    case .began:
        print("Touch down")
    case .changed:
        let force = recognizer.force
        if force > 0.5 {
            print("Medium touch")
        } else if force > 1.0 {
            print("Hard touch")
        }
    default:
        break
    }
}

3D Touch 为我们带来全新的用户交互体验,它使应用程序可以更加智能和高效。