hum*_*ect 4 iphone core-animation calayer uikit
我希望在没有动画的情况下从它的超级层中删除一个 CALayer。这里发生的是图层动画到一个位置,效果很好,但是当动画停止时,执行此代码,将图层返回到其起始位置,然后淡出;大概然后从超级层中移除。如何停止动画 -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];
}
Run Code Online (Sandbox Code Playgroud)
我一直在四处寻找,这段代码与我发现的没有任何不同。
您可以通过在超级层上设置动作字典来禁用隐式动画,以针对涉及子层的动画返回 null(类似于我在此处的回答):
NSMutableDictionary *newActions = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[NSNull null], @"sublayers", nil];
superlayer.actions = newActions;
[newActions release];
Run Code Online (Sandbox Code Playgroud)
您可能还需要覆盖层(不是超级层)的 onOrderOut 操作以防止这种情况发生。我在链接的答案中展示了如何做到这一点。
| 归档时间: |
|
| 查看次数: |
2360 次 |
| 最近记录: |