HapticFeedback
HapticFeedback 是一个易用的iOS触觉反馈生成器。除了默认触觉反馈之外,它还可以播放模式!查看 'ExampleHapticFeedback' 项目。
示例项目
要运行示例项目,首先克隆存储库,然后从示例目录中运行 pod install
。
使用
要使用 HapticFeedback,您只需要将 'HapticFeedback' 模块导入到您的Swift文件中
import HapticFeedback
要使用 HapticFeedback 实例,只需实现带 Hapticable
协议的扩展
// MARK: Hapticable
extension YourClass: Hapticable {
/// Now you can use haptic feedback instance
private func someMethod() {
hapticFeedback.generate(.heavy)
}
}
或者您可以手动实例化 'HapticFeedback' 实例
/// HapticFeedback instance
let hapticFeedback = HapticFeedback()
请注意,根据您所使用的设备,反馈可能有所不同。iPhone 7 开始,所有iPhone都配备有触觉引擎。在iPhone 7之前,HapticFeedback 将使用标准振动。此外,模式播放和冲击在iPhone 7和iOS 10之前的设备上不受支持。
1. 生成预定义默认反馈:
使用 HapticFeedback 可以生成三种默认类型的触觉通知
// MARK: - HapticFeedbackNotification
public enum HapticFeedbackNotification {
case success
case warning
case error
}
以下是生成 成功、警告 和 错误 反馈的示例
/// Generate success feedback
hapticFeedback.generate(.success)
/// Generate warning feedback
hapticFeedback.generate(.warning)
/// Generate error feedback
hapticFeedback.generate(.error)
2. 生成冲击反馈:
除了默认的触觉通知外,HapticFeedback 还可以生成冲击通知。库支持三种冲击通知类型(可在 iOS10+ 和从 iPhone 7 开始使用)
// MARK: - HapticFeedbackImpactStyle
public enum HapticFeedbackImpactStyle {
case light
case medium
case heavy
}
用法与前面的示例类似
/// Generate medium feedback
hapticFeedback.generate(.medium)
3. 模式播放:
现在是一些特别的功能 - 模式播放。 HapticFeedback 可以播放模式,这些模式被“编码”成字符串。让我们看一个小例子
/// Generate custom pattern
hapticFeedback.generate("..oooO-O-Oooo..", delay: 0.1)
字符串中的每个字符代表某些特定的触觉冲击
- "O" - 重冲击
- "o" - 中等冲击
- "." - 轻冲击
- "-" - 持续时间为 0.1 秒的延迟
4. UI 扩展:
HapticFeedback 包含一些 UI 扩展:`HapticFeedbackButton` (它是 `UIButton` 的子类)和带有 `Hapticable` 协议的 `UIViewController` 扩展。
要开始使用 `HapticFeedbackButton`,只需在你的项目中将类名设置为 `HapticFeedbackButton`。然后,当触发的 `UIControlEvents.touchDown` 事件时,你会获得强冲击反馈;在 `UIControlEvents.touchUpInside` 和 `UIControlEvents.touchUpOutside` 事件时,你会得到弱冲击反馈。
UIViewController 扩展
/// Present view controller with haptic feedback notifications
/// - Parameters:
/// - viewControllerToPresent: current view controller
/// - flag: bool flag
/// - hapticFeedbackNotification: hapticFeedbackNotification types
/// - completion: completion handler
public func present(
_ viewControllerToPresent: UIViewController,
animated flag: Bool,
hapticFeedbackNotification: HapticFeedbackNotification,
completion: (() -> Void)? = nil
) {
present(viewControllerToPresent, animated: flag, completion: completion)
hapticFeedback.generate(hapticFeedbackNotification)
}
要使用带有 `UIViewtController` 扩展的 HapticFeedback,请参考以下简单的示例
/// Show notification alert
func showAlert(title: String, message: String, hapticFeedbackNotification: HapticFeedbackNotification) {
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Ok", style: .default))
/// Here like this
present(alert, animated: true, hapticNotification: hapticFeedbackNotification)
}
需求
- iOS 10.0+
- Xcode 9.0
- Swift 5
通信
- 如果你发现了一个错误,请打开一个问题。
- 如果你有功能请求,请打开一个问题。
- 如果你想要做出贡献,请提交一个pull请求。
安装
Cocoapods
CocoaPods 是 Cocoa 项目的依赖管理器。你可以使用以下命令来安装它
$ gem install cocoapods
要使用 CocoaPods 进行安装,只需将以下行添加到你的 Podfile 文件中
use_frameworks!
target "<Your Target Name>" do
pod "haptic-feedback", :git => "https://github.com/Incetro/haptic-feedback", :tag => "[1.0.3]"
end
然后,运行以下命令
$ pod install
手动
如果你不喜欢使用依赖管理器,你可以手动将 振动反馈 集成到你的项目中。
嵌入框架
-
在终端中打开,
cd
进入你的顶级项目目录,然后运行以下命令 "if" 你的项目还没有初始化为 git 仓库$ git init
-
通过运行以下命令将 触觉反馈 添加为 git 子模块
$ git submodule add https://github.com/incetro/haptic-feedback.git
-
打开新的
haptic-feedback
文件夹,并将HapticFeedback.xcodeproj
拖至您应用程序的 Xcode 项目的项目导航器中。它应嵌套在您应用程序蓝色的项目图标下。它的位置是在所有其他 Xcode 组之上还是之下并不重要。
-
在项目导航器中选择
HapticFeedback.xcodeproj
并验证部署目标与应用程序目标的部署目标相匹配。 -
接下来,在项目导航器中选择您自己的应用程序项目(蓝色项目图标),导航到目标配置窗口,并在侧边栏的“目标”标题下选择应用程序目标。
-
在窗口顶部的标签栏中,打开“通用”面板。
-
点击“嵌入二进制文件”部分下的
+
按钮。 -
您将看到两个不同的
HapticFeedback.xcodeproj
文件夹,每个文件夹中都有一个嵌套在“产品”文件夹下的两个不同版本的HapticFeedback.framework
。 -
选择
HapticFeedback.framework
。您可以通过检查项目的构建日志来验证您选择了哪个。Nio 的构建目标将被列为
HapticFeedback iOS
。 -
就这么多!
HapticFeedback.framework
已自动添加为目标依赖项,链接框架和嵌入框架,在复制文件构建阶段完成所有这些,即可在模拟器和设备上构建。
作者
Gasol: [email protected],incetro: [email protected]
许可
触觉反馈 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。