【问题标题】:animation: how to animate a view using layer?动画:如何使用图层为视图设置动画?
【发布时间】:2012-10-19 01:57:47
【问题描述】:

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

【问题讨论】:

    标签: ios core-animation


    【解决方案1】:

    隐式动画仅适用于独立层,而不是支持视图的层。您将需要明确地为该位置设置动画。您可以通过为该位置创建 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;
    }];
    

    【讨论】:

    • 或者第三种选择是创建一个附加层并添加为视图层的子层,然后更改该附加层的属性。这样,附加层就不会是视图支持层,而是支持隐式动画。但是,UIView 动画比创建 CAAnimation 对象要容易得多、干净得多
    • David,我在将图层移动到新位置时遇到了toValue 属性的问题。你介意看看吗? stackoverflow.com/questions/37554068/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多