gpt4 book ai didi

iphone - iPhone 上的核心动画问题

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

我是 iPhone 开发新手,正在使用 Core Animation 进行一些实验。我遇到了一个关于我尝试的动画持续时间的小问题。

基本上,我有一个带有两个 subview 的 View ,并且我正在尝试设置它们的不透明度动画,以便一个淡入而另一个淡出。问题是, subview 不是逐渐淡入/淡出,而是简单地立即切换到完全/零不透明度。我尝试使用 CATransaction 调整动画持续时间,但没有明显效果。它也不是特定于动画不透明度 - 动画位置显示同样的问题。

我正在使用的代码(在 super View 的方法内)如下:

CALayer* oldLayer = ((UIView*) [[self subviews] objectAtIndex:0]).layer;
CALayer* newLayer = ((UIView*) [[self subviews] objectAtIndex:1]).layer;

[CATransaction begin];
[CATransaction setAnimationDuration:1.0f];
oldLayer.opacity = 0.0;
newLayer.opacity = 1.0;
[CATransaction commit];

有人知道问题出在哪里吗?

最佳答案

Noah 的解决方案是执行您想要的操作的最简洁方法,但您看不到动画的原因是支持 UIView 的 CALayers 禁用了隐式动画。由于没有任何动画,CATransaction 无法设置任何内容的持续时间。

如果您确实想在图层上执行此动画,则需要设置手动 CABasicAnimation 来执行此操作:

CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
opacityAnimation.removedOnCompletion = NO;
opacityAnimation.fillMode = kCAFillModeForwards;

[oldLayer addAnimation:opacityAnimation forKey:@"opacity"];
[newLayer addAnimation:opacityAnimation forKey:@"opacity"];

[CATransaction begin];
[CATransaction setAnimationDuration:1.0f];
oldLayer.opacity = 0.0;
newLayer.opacity = 1.0;
[CATransaction commit];

(请注意,我不确定您是否可以在此处重复使用不透明动画。您可能需要为每个图层创建单独的实例。)

关于iphone - iPhone 上的核心动画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2444282/

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