码迷,mamicode.com
首页 > 移动开发 > 详细

iOS pop动画之衰减动画的基本使用

时间:2015-04-27 18:21:01      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

衰减动画

- (void)viewDidLoad {

    [super viewDidLoad];

    [self initCircleBtn];

}

 

- (void)initCircleBtn {

    // 实例化手势,并最终将手势添加到圆形按钮上

  UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];

    // 实例化圆形按钮

    UIButton *circleBtn = [[UIButton alloc]init];

    circleBtn.bounds = CGRectMake(0, 0, 100, 100);

    circleBtn.center = self.view.center;

    circleBtn.backgroundColor = [UIColor redColor];

    circleBtn.layer.cornerRadius = CGRectGetWidth(circleBtn.frame) / 2;

    [circleBtn addGestureRecognizer:pan];

    [circleBtn addTarget:self action:@selector(handleDown:) forControlEvents:UIControlEventTouchDown];

    [self.view addSubview:circleBtn];

}

 

- (void)handlePan:(UIPanGestureRecognizer *)recognizer {

    CGPoint translation = [recognizer translationInView:self.view];

    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);

    [recognizer setTranslation:CGPointMake(0, 0) inView:self.view]; // 这句比较重要,因为handlePan:会持续调用,如果不把上一次调用该方法产生的位移清零,按钮会移动得很快

    // 松手时,启动衰减动画

    if (recognizer.state == UIGestureRecognizerStateEnded) {

        CGPoint velocity = [recognizer velocityInView:self.view]; // 获取松手时,手势在控制器view的速度

        POPDecayAnimation *popAnimation = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPosition]; // 实例化衰减动画,该衰减动画作用于Position

        [popAnimation setVelocity:[NSValue valueWithCGPoint:velocity]]; // 设置衰减动画的初始速度

        [recognizer.view pop_addAnimation:popAnimation forKey:@"suibian"]; // 添加衰减动画到圆形按钮

    }

}

 

iOS pop动画之衰减动画的基本使用

标签:

原文地址:http://www.cnblogs.com/oumygade/p/4460796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!