zoukankan      html  css  js  c++  java
  • 微信摇一摇实现原理,视图展示

    一: 实现原理

    在 UIResponder中存在这么一套方法

    - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);

    - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);

    - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);

    这就是执行摇一摇的方法。那么怎么用这些方法呢?

    很简单,你只需要让这个Controller本身支持摇动

    同时让他成为第一相应者:

    - (void)viewDidLoad
    
    {
    
        [superviewDidLoad];
    
    // Do any additional setup after loading the view, typically from a nib.
    
        [[UIApplication sharedApplication] setApplicationSupportsShakeToEdit:YES];
    
        [self becomeFirstResponder];
    
    }
    
     
    
    //然后去实现那几个方法就可以了
    
    - (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
    
    {
    
        //检测到摇动
    
    }
    
     
    
    - (void) motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
    
    {
    
        //摇动取消
    
    }
    
     
    
    - (void) motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
    
    {
    
        //摇动结束
    
        if (event.subtype == UIEventSubtypeMotionShake) {
    
            //something happens
    
        }
    
    }
    

      

    二: 动画效果实现

    // 摇动结束 调用该方法即可
    - (void)addAnimations
    {
        AudioServicesPlaySystemSound (soundID);
        
        //让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.4;
        translation2.repeatCount = 1;
        translation2.autoreverses = YES;
        
        //让imagdown上下移动
        CABasicAnimation *translation = [CABasicAnimation animationWithKeyPath:@"position"];
        translation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
        translation.fromValue = [NSValue valueWithCGPoint:CGPointMake(160, 345+44+20)];
        translation.toValue = [NSValue valueWithCGPoint:CGPointMake(160, 420)];
        translation.duration = 0.4;
        translation.repeatCount = 1;
        translation.autoreverses = YES;
        
        [imgDown.layer addAnimation:translation forKey:@"translation"];
        [imgUp.layer addAnimation:translation2 forKey:@"translation2"];
    }
    

      

  • 相关阅读:
    windows 下使用cmake指定visual studio 版本
    python This application failed to stat could not find or load the Qt platform plugin "windows"
    WEP无线网络密码破解
    使用PsExec tool在Session 0下运行程序
    关于远程桌面出现:“由于数据加密错误,这个会话将结束。请重新连接到远程计算机。”
    VB命令行参数分隔, 类似C语言中的main(int argc, char* argv[])
    VS2010/MFC编程入门之四十四:定时器Timer
    MFC之进度条CProgressCtrl
    VC版DoEvents
    文件夹选择对话框
  • 原文地址:https://www.cnblogs.com/xujiahui/p/6044122.html
Copyright © 2011-2022 走看看