gpt4 book ai didi

objective-c - CoreAnimation 淡出图层并移动副本,而不仅仅是移动图层

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

我正在开发一个显示核心动画层网格的 View 。当我删除一个图层时,我希望该图层淡出并让其他图层移动以填充间隙。这几乎按照我希望的使用隐式动画的方式工作。唯一的问题是,当这些图层的副本移动到新位置时,应该移动的图层会淡出。我怎样才能改变这种行为,以便图层只是移动而不是移动和淡入淡出?

要删除单层,我只需 [theLayer removeFromSuperLayer]然后在容器层上调用我的布局例程来执行以下操作:

CGFloat x = 0;
CGFloat y = CGRectGetMaxY( [layer bounds] ) - buttonHeight - buttonVPadding;
for (CALayer *l in [layer sublayers]) {
if ([layer bounds].size.width < x + buttonWidth) {
x = 0;
y -= buttonHeight + buttonVPadding;
}
CGRect bounds = CGRectMake( 0, 0, buttonWidth, buttonHeight );
[l setBounds: bounds];
[l setPosition: CGPointMake( x, y )];
x += buttonWidth + buttonVPadding;
}

我尝试覆盖 - (id<CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event; 中的默认动画行为但我找不到要重写哪些事件才能获得所需的行为。

最佳答案

输入此问题并进一步思考该问题后,我找到了解决方案或解决方法。我没有直接删除图层,而是将其设置为隐藏并在布局循环中跳过隐藏图层。然后,在所有动画完成后(在我的 CATransaction 的完成 block 中),我删除所有没有动画的隐藏层。

关于objective-c - CoreAnimation 淡出图层并移动副本,而不仅仅是移动图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6138016/

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