如何阻止CALayers动画?

jow*_*wie 1 iphone core-animation objective-c calayer uiview

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

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

谢谢!

:-Joe

jow*_*wie 12

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

从帮助:

通过将事务的kCATransactionDisableActions的值设置为true,可以在更改图层属性值时临时禁用图层操作.在该事务范围内进行的任何更改都不会导致动画发生.清单2显示了一个示例,该示例禁用从可见的图层树中删除aLayer时发生的淡入淡出动画.

[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue
                 forKey:kCATransactionDisableActions];
[aLayer removeFromSuperlayer];
[CATransaction commit];
Run Code Online (Sandbox Code Playgroud)

  • 正如@Bo和@Christopher在本页的其他地方指出的那样,属性设置器`[CATransaction setDisableActions:YES];`是一种更简洁的方法. (2认同)

Chr*_*rdt 10

此外,为清洁起见,请使用此行:

[CATransaction setDisableActions:YES];  
Run Code Online (Sandbox Code Playgroud)

代替这一个:

[CATransaction setValue:(id)kCFBooleanTrue
               forKey:kCATransactionDisableActions];
Run Code Online (Sandbox Code Playgroud)