gpt4 book ai didi

iphone - 无法禁用 CALayer>>removeFromSuperlayer 的动画

转载 作者:行者123 更新时间:2023-12-03 20:58:31 25 4
gpt4 key购买 nike

我希望从其 super 层中删除 CALayer,而不使用动画。这里发生的事情是图层动画到一个位置,效果很好,但是当动画停止时,执行此代码,将图层返回到其开始位置,并淡出;大概然后从 super 层中删除。如何阻止它动画 -removeFromSuperlayer ?对于未注释和未注释、事务或无事务的所包含注释的所有变体,此处列出的代码具有相同的行为。我错过了什么?

- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
//[self setHidden: YES];

//[CATransaction flush];
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue
forKey:kCATransactionDisableActions];
//[CATransaction setDisableActions: YES];
//[CATransaction setAnimationDuration: 0];
[self removeFromSuperlayer];
[CATransaction commit];
}

我一直在寻找,这段代码与我发现的没有任何不同。

最佳答案

您可以通过在 super 层上设置 Action 字典来禁用隐式动画,以针对涉及子层的动画返回 null(类似于我的答案 here ):

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

您可能还需要覆盖图层(而不是 super 图层)的 onOrderOut 操作以防止出现这种情况。我在链接的答案中展示了如何做到这一点。

关于iphone - 无法禁用 CALayer>>removeFromSuperlayer 的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3133547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com