亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS如何實現仿微信搖一搖動畫效果加震動音效

發布時間:2021-07-08 18:16:27 來源:億速云 閱讀:181 作者:小新 欄目:移動開發

小編給大家分享一下iOS如何實現仿微信搖一搖動畫效果加震動音效,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

效果:

iOS如何實現仿微信搖一搖動畫效果加震動音效

對于搖一搖功能, 在iOS中系統默認為我們提供了搖一搖的功能檢測API. iOS 中既然已經提供了接口, 我們直接調用就好了.

#import <QuartzCore/QuartzCore.h>
#import <AudioToolbox/AudioToolbox.h>

實現原理

1. 監聽搖一搖方法

// 搖一搖開始
- (void)motionBegan:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event NS_AVAILABLE_IOS(3_0);
// 搖一搖結束
- (void)motionEnded:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event NS_AVAILABLE_IOS(3_0);
// 搖一搖取消
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event NS_AVAILABLE_IOS(3_0);

2. 解決搖一搖失效的情況.

ps: 使用 Xcode6.x 后創建的項目,僅僅實現第一步監聽就可以實現,沒有遇到這種問題.

- (BOOL)canBecomeFirstResponder {
  return YES;
}

3. 搖一搖階段需要震動及聲音.

// 搖動開始
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
  AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
}
// 搖動結束
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {

  if (motion ==UIEventSubtypeMotionShake ) {

    // 1.添加搖動動畫
    // 見第四點, 推薦第四點的方法二

    // 2.設置播放音效
    SystemSoundID soundID; 
    NSString *path = [[NSBundle mainBundle ] pathForResource:@"shake_sound_male" ofType:@"wav"];
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &soundID);
    // 添加搖動聲音
    AudioServicesPlaySystemSound (soundID);

    // 3.設置震動
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
  }
}

4. 搖一搖階段需要動畫效果.

微信的搖一搖功能是先在視圖上放一個搖后要顯示的圖片:手拿手機的圖片, 這個圖片就是上下兩半拼在一起給人一種一張圖片的感覺;當檢測到搖一搖 捕捉到晃動事件后,上下兩張圖片分別上下做一個動畫移動(上面的一半往上移,下面的往下移),在completion 里面再移回來.

這里有兩種方法:

方法一: 抽出來添加動畫效果的方法, 在搖一搖結束方法里添加這個方法.

- (void)addAnimations {

  // 讓imgup上下移動
  CABasicAnimation *translation2 = [CABasicAnimation animationWithKeyPath:@"position"];
  translation2.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
  translation2.fromValue = [NSValue valueWithCGPoint:CGPointMake(160, 115)];
  translation2.toValue = [NSValue valueWithCGPoint:CGPointMake(160, 40)];
  translation2.duration = 0.5;
  translation2.repeatCount = 1;
  translation2.autoreverses = YES;

  // 讓imagdown上下移動
  CABasicAnimation *translation = [CABasicAnimation animationWithKeyPath:@"position"];
  translation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
  translation.fromValue = [NSValue valueWithCGPoint:CGPointMake(160, 345)];
  translation.toValue = [NSValue valueWithCGPoint:CGPointMake(160, 420)];
  translation.duration = 0.5;
  translation.repeatCount = 1;
  translation.autoreverses = YES;

  [self.imgDown.layer addAnimation:translation forKey:@"translation"];
  [self.imgUp.layer addAnimation:translation2 forKey:@"translation2"];
}

方法二. 在搖一搖開始和結束里添加搖動動畫效果及菊花效果

/**
 * 搖動開始
 */
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {

  NSLog(@"開始搖了");

  // 菊花顯示并開始轉動
  self.aiLoad.hidden = NO;
  [self.aiLoad startAnimating];

  AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

  CGFloat offset = self.bgImgView.height * 0.5;
  CGFloat duration = 0.4;
  [UIView animateWithDuration:duration animations:^{
    self.imgUp.y -= offset;
    self.imgDown.y += offset;
  }];
}

/**
 * 搖動結束
 */
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {

  NSLog(@"搖動結束");

  // 不是搖一搖事件則返回
  if (motion != UIEventSubtypeMotionShake) return;

  // 1.添加搖動動畫
  CGFloat offset = self.bgImgView.height * 0.5;
  CGFloat duration = 0.4;
  [UIView animateWithDuration:duration animations:^{
    self.imgUp.y += offset;
    self.imgDown.y -= offset;
  }];

  // 菊花暫停轉動并隱藏
  [self.aiLoad stopAnimating];
  self.aiLoad.hidden = YES;
}

當然也有使用搖一搖做其他功能的,可以在當結束搖動時,就發送一個網絡請求作相關操作即可。

以上是“iOS如何實現仿微信搖一搖動畫效果加震動音效”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ios
AI

兰溪市| 平凉市| 静乐县| 上杭县| 江门市| 双桥区| 平远县| 南平市| 乾安县| 六盘水市| 无锡市| 瓮安县| 靖安县| 凤山市| 太康县| 呼和浩特市| 甘洛县| 武清区| 兰溪市| 绍兴县| 樟树市| 民县| 崇左市| 伽师县| 昌江| 海晏县| 色达县| 留坝县| 崇州市| 夹江县| 大洼县| 桃园市| 新蔡县| 于都县| 兴和县| 金沙县| 博爱县| 哈密市| 义乌市| 儋州市| 乐至县|