微信摇一摇实现原理,视图展示
Posted 徐家汇123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信摇一摇实现原理,视图展示相关的知识,希望对你有一定的参考价值。
一: 实现原理
在 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"]; }
以上是关于微信摇一摇实现原理,视图展示的主要内容,如果未能解决你的问题,请参考以下文章