iOS 振動反饋


代碼地址如下:
http://www.demodashi.com/demo/12461.html

1. 常用場景

繼 iPhone7/7P 實體 home 鍵出現后,home 鍵再也無法通過真實的物理按壓反饋給用戶了, apple 使用各種不同的振動效果代替了之前的按壓反饋,效果非常好。
振動反饋的使用場景還僅費如此,現在很多 app 中增加了振動反饋的效果。
例:
① 新浪微博,下拉刷新會有振動效果反饋
② 摩拜單車,掃碼開鎖成功后會有振動效果

2. 源碼解釋

cocoa 框架中提供了幾種振動反饋效果


// OC 代碼

// UIImpactFeedbackGenerator
typedef NS_ENUM(NSInteger, UIImpactFeedbackStyle) {
    UIImpactFeedbackStyleLight,
    UIImpactFeedbackStyleMedium,
    UIImpactFeedbackStyleHeavy
};

// UINotificationFeedbackGenerator
typedef NS_ENUM(NSInteger, UINotificationFeedbackType) {
    UINotificationFeedbackTypeSuccess,
    UINotificationFeedbackTypeWarning,
    UINotificationFeedbackTypeError
};


/// Swift 代碼

public enum UIImpactFeedbackStyle : Int {
    case light
    case medium
    case heavy
}

public enum UINotificationFeedbackType : Int {
    case success
    case warning
    case error
}

UIImpactFeedbackGeneratorUINotificationFeedbackGenerator 均繼承於 UIFeedbackGenerator

封裝

OC 版

// 創建一個枚舉
typedef enum {
    light = 0,
    medium,
    heavy,
    success,
    warning,
    error,
    none
}FeedbackType;

Swift 版本


/// 創建枚舉
public enum FeedbackType: Int {
    case light
    case medium
    case heavy
    case success
    case warning
    case error
    case none
}

/// 創建類方法,隨時調用
class func impactFeedback(style: FeedbackType) {

        if #available(iOS 10.0, *) {

            switch style {
            case .light:
                let generator = UIImpactFeedbackGenerator(style: .heavy)
                generator.impactOccurred()
            case .medium:
                let generator = UIImpactFeedbackGenerator(style: .medium)
                generator.impactOccurred()
            case .heavy:
                let generator = UIImpactFeedbackGenerator(style: .heavy)
                generator.impactOccurred()
            case .success:
                let generator = UINotificationFeedbackGenerator()
                generator.notificationOccurred(.success)
            case .warning:
                let generator = UINotificationFeedbackGenerator()
                generator.notificationOccurred(.warning)
            case .error:
                let generator = UINotificationFeedbackGenerator()
                generator.notificationOccurred(.error)
            default:
                break
            }

        }

    }

3. 項目結構圖

對系統方式進行封裝,更方便的調用
代碼分 OC 版和 Swift 版

4. Demo 截圖


注意事項

請使用真機測試效果。
要求系統版本最低 iOS10.

iOS 振動反饋

代碼地址如下:
http://www.demodashi.com/demo/12461.html

注:本文著作權歸作者,由demo大師代發,拒絕轉載,轉載需要作者授權


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM