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"];
    }
    

      

  • 相关阅读:
    MySQL性能调优my.cnf详解
    PHP调试工具Xdebug安装配置教程
    【转载】Zend Studio 10正式版注册破解
    SQL 大全(3)
    SQL 大全(1)
    JQuery方法
    修改 C:Users[account name] 目录名称
    wordmate 词典安装
    Python3 之 import 和 当前目录
    初遇 dotcloud
  • 原文地址:https://www.cnblogs.com/xujiahui/p/6044122.html
Copyright © 2011-2022 走看看