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

      

  • 相关阅读:
    进度条
    html5 表单新增事件
    html5 表单的新增type属性
    html5 表单的新增元素
    html5 语义化标签
    jq 手风琴案例
    codeforces 702D D. Road to Post Office(数学)
    codeforces 702C C. Cellular Network(水题)
    codeforces 702B B. Powers of Two(水题)
    codeforces 702A A. Maximum Increase(水题)
  • 原文地址:https://www.cnblogs.com/xujiahui/p/6044122.html
Copyright © 2011-2022 走看看