【问题标题】:iOS: Proper way to change an objects position after animationiOS:动画后更改对象位置的正确方法
【发布时间】:2013-12-01 15:44:53
【问题描述】:

我对 UIViews 层和它的框架之间的区别有点困惑。据我了解,图层就像视图的图像表示。所以,假设我在 UIView 子类中实现了这样的方法:

-(void)translate
{
    CATransform3D translate = CATransform3DIdentity;

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

    [UIView animateWithDuration:2 animations:^{

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

    }];

}

那么,如果我希望视图在动画结束时实际位于该位置,我要更改什么属性?我是否移动框架,然后将变换设置为身份?

【问题讨论】:

  • 为什么不对图层的position 或视图的center 进行动画处理?

标签: ios objective-c uiview core-animation


【解决方案1】:

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

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

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

iOS: Should I Add UIViews or CALayers for animation?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多