1

图片显示了我想要实现的目标

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

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

1 回答 1

6

隐式动画仅适用于独立层,而不是支持视图的层。您将需要明确地为该位置设置动画。您可以通过为位置创建 CABasicAnimation 并将其添加到图层来实现,或者使用 UIView 动画来为视图的中心属性设置动画。

创建显式动画

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;
}];
于 2012-10-18T17:47:38.560 回答