iOS:在动画后更改对象位置的正确方法

时间:2013-12-01 15:44:54

标签: ios objective-c uiview core-animation

我对UIViews图层与其框架之间的区别感到困惑。据我所知,图层就像是视图的图像表示。所以,假设我在UIView子类中实现了这样的方法:

-(void)translate
{
    CATransform3D translate = CATransform3DIdentity;

    translate = CATransform3DTranslate(translate, 20, 0, 0);

    [UIView animateWithDuration:2 animations:^{

        self.layer.transform = translate;
    } completion:^(BOOL finished){

    }];

}

所以,如果我希望视图实际上位于动画结尾处的那个位置,那么我要更改哪个属性?我是否移动框架,然后将转换设置为标识?

1 个答案:

答案 0 :(得分:1)

每个视图都由CALayer 支持(例如,每个UIView 都有 CALayer)。 UIView增加了内置的交互机制等。

如果更改图层,框架将自动更改,因此如果您在图层上设置动画,则无需担心维护视图的框架属性(这是UIKit的工作)。

至于动画图层与视图本身,Brad Larson有一个很好的解释:

iOS: Should I Add UIViews or CALayers for animation?