触觉反馈 1.0.4

触觉反馈 1.0.4

Alexander Lezya 维护。



  • 作者
  • incetro和Alexander Lezya

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 文件。