【问题标题】:Add a sublayer to a CALayer without animation?将子层添加到没有动画的 CALayer?
【发布时间】:2010-07-26 19:39:45
【问题描述】:

如何在没有动画的情况下向 CALayer 添加子图层?通常,当您添加一个时,它会“淡入”,而当您删除一个时,它会“淡出”。

如何抑制动画?

【问题讨论】:

    标签: objective-c core-animation calayer


    【解决方案1】:

    你试过这个吗:

    [CATransaction begin];
    [CATransaction setValue:(id)kCFBooleanTrue
                     forKey:kCATransactionDisableActions];
    [layer addSublayer:sublayer];
    [CATransaction commit];
    

    来自the Apple docs

    【讨论】:

    • 这应该可以,但请注意,从 iPhone OS 3.0 开始,您可以简单地执行 [CATransaction setDisableActions:YES];
    • 是的。好点子。希望我们能获得 Apple 文档的更新。 ;-)
    【解决方案2】:

    您还可以通过在超级层上设置动作字典来抑制隐式添加层动画,就像我在this answer 中描述的那样:

    NSMutableDictionary *newActions = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[NSNull null], @"sublayers", nil];
    superlayer.actions = newActions;
    [newActions release];
    

    【讨论】:

      【解决方案3】:

      你可以使用

      [CATransaction setAnimationDuration:0.0f];
      

      【讨论】:

      • 当有其他可用的解决方案不需要时,请使用“可以”而不是“需要”这样的词
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 2016-08-10
      相关资源
      最近更新 更多