动画:如何使用图层为视图设置动画?

时间:2012-10-18 15:19:53

标签: ios core-animation

Image showing what I would like to achieve

我想将一个视图从一个位置动态移动到一个新位置。如果更新视图的图层位置,我认为视图将动画移动到新位置,我猜是implicit animation,但是没有动画,为什么?

- (IBAction)startAnimation:(id)sender {
    CGPoint position = self.imageView.layer.position;
    position.y += 90;
    self.imageView.layer.position = position;
}

1 个答案:

答案 0 :(得分:6)

隐式动画仅发生在独立图层上,而不是图层备份视图。您需要明确动画该位置。您可以通过为位置创建CABasicAnimation并将其添加到图层或使用UIView动画为视图的center属性设置动画来实现。

创建显式动画

CABasicAnimation *move = [CABasicAnimation animationWithKeyPath:@"position"];
move.toValue = [NSValue valueWithCGPoint:newPoint];
move.duration = 0.3;
[self.imageView.layer addAnimation:move forKey:@"myMoveAnimation"];

使用UIView动画

[UIView animateWithDuration:0.3 animations:^{
    self.imageView.center = newCenter;
}];