【问题标题】:How can I stop CALayers from animating?如何阻止 CALayers 制作动画?
【发布时间】:2010-08-11 16:07:14
【问题描述】:

我在我的视图中创建了一堆子图层,用图形填充每个子图层,因此它们实际上是精灵。但是,当我调用 [lineLayer setValue:[NSNumber numberWithFloat:0.5] forKeyPath:@"transform.scale"] 时,它似乎“补间”到那个大小,而不是仅仅以新的比例出现。

有没有办法关闭这种行为?我只是想直接改变比例。

谢谢!

:-乔

【问题讨论】:

    标签: iphone objective-c uiview core-animation calayer


    【解决方案1】:

    啊,我刚刚回答了我自己的问题……我一直在这里!

    来自帮助:

    您可以暂时禁用图层 更改图层属性时的操作 通过设置的值的值 交易的 kCATransactionDisableActions 为真。 范围内所做的任何更改 该交易不会导致 动画发生。清单 2 显示 禁用淡入淡出的示例 移除时出现的动画 aLayer 来自可见层树。

    [CATransaction begin];
    [CATransaction setValue:(id)kCFBooleanTrue
                     forKey:kCATransactionDisableActions];
    [aLayer removeFromSuperlayer];
    [CATransaction commit];
    

    【讨论】:

    • 正如@Bo 和@Christopher 在本页其他地方指出的那样,属性设置器[CATransaction setDisableActions:YES]; 是一种更简洁的方法。
    【解决方案2】:

    另外,为了清洁起见,请使用以下行:

    [CATransaction setDisableActions:YES];  
    

    代替这个:

    [CATransaction setValue:(id)kCFBooleanTrue
                   forKey:kCATransactionDisableActions];
    

    【讨论】:

    • 好点,我不知道为什么苹果在他们的帮助中没有这样说明!虽然这并不是一个真正的单独答案......它确实应该添加到另一个答案中。谢谢。
    • 我可以补充一下,你也只需要那行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多