zoukankan      html  css  js  c++  java
  • iOS 摇一摇的功能

    效果如下

    相关素材

    相关代码如下

    #import "ShakeViewController.h"
    #import <AudioToolbox/AudioToolbox.h>
    #import <AVFoundation/AVFoundation.h>
    
    #define kScreenWidth  [UIScreen mainScreen].bounds.size.width
    #define kScreenHeight [UIScreen mainScreen].bounds.size.height
    
    @interface ShakeViewController ()
    
    @property (nonatomic,strong)UIImageView *topImgView;
    @property (nonatomic,strong)UIImageView *botImgView;
    
    @property (nonatomic) SystemSoundID  soundID;
    
    @end
    
    @implementation ShakeViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        
        [UIApplication sharedApplication].applicationSupportsShakeToEdit = YES;
        [self becomeFirstResponder];
        self.view.backgroundColor = [UIColor colorWithRed:245/255.0
                                                    green:245/255.0
                                                     blue:245/255.0
                                                    alpha:1.0];
        
        [self inintImageView];
        [self initSoudID];
    }
    
    //初始化振动的图片
    - (void)inintImageView
    {
        //中间线位置
        CGFloat y = 64+(kScreenHeight-64)/2;
        //图片的比例  宽/高
        CGFloat scale = 208/320.0;
        
        _topImgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, y-(kScreenWidth*scale), kScreenWidth, kScreenWidth*scale)];
        _topImgView.image = [UIImage imageNamed:@"Shake_01"];
        [self.view addSubview:_topImgView];
        
        _botImgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, y, kScreenWidth, kScreenWidth*scale)];
        _botImgView.image = [UIImage imageNamed:@"Shake_02"];
        [self.view addSubview:_botImgView];
    }
    
    //对soundID进行赋值
    - (void)initSoudID
    {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"shake_sound_male" ofType:@"wav"];
        AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &_soundID);
    }
    
    
    /*************************** 振动检测 ******************************/
    -(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
    {
        //播放
        AudioServicesPlaySystemSound (_soundID);
    
        CGFloat y_top = _topImgView.frame.origin.y;
        CGFloat y_bot = _botImgView.frame.origin.y;
    
        [UIView animateWithDuration:0.3 animations:^{
            
            _topImgView.frame = CGRectMake(0, y_top-50, _topImgView.frame.size.width, _topImgView.frame.size.height);
            _botImgView.frame = CGRectMake(0, y_bot+50, _botImgView.frame.size.width, _botImgView.frame.size.height);
            
        } completion:^(BOOL finished) {
            
            [UIView animateWithDuration:0.3 animations:^{
                
                _topImgView.frame = CGRectMake(0, y_top, _topImgView.frame.size.width, _topImgView.frame.size.height);
                _botImgView.frame = CGRectMake(0, y_bot, _botImgView.frame.size.width, _botImgView.frame.size.height);
                
            } completion:^(BOOL finished) {
                
            }];
            
        }];
    }
    
    -(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
    {
        [self performSelector:@selector(vibrate) withObject:nil afterDelay:0.6];
    }
    
    
    -(void)vibrate
    {
        //振动
        AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
    }
    
    
    
    
    @end
  • 相关阅读:
    Win8系统 Python安装
    一些安卓开源框架整理
    Android 媒体键监听以及模拟媒体键盘的实现 demo
    android View 自动 GONE 问题
    Android 定时器TimerTask 简单使用
    关于Android studio 相对 eclipse 优点
    Java序列化与反序列化
    android shape的使用 边框
    Android Studio 修改 包名 package name
    Android WebView Long Press长按保存图片到手机
  • 原文地址:https://www.cnblogs.com/qianLL/p/5579416.html
Copyright © 2011-2022 走看看