• 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
  • 相关阅读:
    FusionCharts数据展示成饼状图、柱状图和折线图
    Js获取request中的对象的属相值
    在grid结果集中实现全选或全不选某些特定的行
    JQuery的一些基础知识
    查询的数据插入不到临时表中的原因
    Javascript获取页面表格中的数据
    ajax实现菜单联动显示信息(当选择单位的时候,动态关联出人员信息)
    form表单只提交数据而不进行页面跳转的解决方案
    NotSupportedException-无法将类型“System.DateTime”强制转换为类型“System.Object”
    LINQ to SQL语句
  • 原文地址:https://www.cnblogs.com/qianLL/p/5579416.html
Copyright © 2020-2023  润新知