gpt4 book ai didi

ios - 更改 ViewDidAppear 上的核心动画持续时间似乎不起作用

转载 作者:行者123 更新时间:2023-11-28 23:07:42 24 4
gpt4 key购买 nike

我试图让 iPad 启动画面淡出以在 2 秒内显示我的应用程序的主界面。主界面是我的主视图 Controller 和 View ,位于导航 Controller 内。

所以我做了以下事情:

UINavigationController 和我的 Root View Controller 。 Root View Controller 的界面全部布局,作为最后一步,CALayer 具有相同的 png 用于覆盖界面的初始屏幕。

想法是,一旦真正的启动画面消失了,CALayer 仍然存在。然后我将 CAlayer 淡出以显示界面。它有点管用:淡入淡出,但无论我为动画设置多长时间,它仍然发生得太快。

代码如下:(logoLayer 是一个 ivar,mainCanvas 是 self.view 中的一个容器 View ,我在其中插入了大多数 subview ——用于其他屏幕暗淡类型的效果。)

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
// Custom initialization

self.view.layer.backgroundColor = [UIColor clearColor].CGColor;
[self setLayerContent:[[NSBundle mainBundle] pathForResource:@"interfaceBackground" ofType:@"png"]];
[self layoutNavigationButtonWithResource:@"button1" glowing:YES forAction:@"biblioteca"];
[self layoutNavigationButtonWithResource:@"button2"glowing:YES forAction:@"portfolio"];

NSString *logoPath = [[NSBundle mainBundle] pathForResource:@"Default-Portrait~ipad" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:logoPath];
logoLayer = [[CALayer layer] retain];
logoLayer.contents = (id)image.CGImage;
logoLayer.bounds = CGRectMake(0, 0, image.size.width, image.size.height);
logoLayer.anchorPoint = CGPointMake(0, 0);
logoLayer.opacity = 1;
[mainCanvas.layer addSublayer:logoLayer];
}

return self;
}

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self performSelector:@selector(fadeOutLogo) withObject:nil afterDelay:0.1];
}

- (void)fadeOutLogo
{
CABasicAnimation *a = [CABasicAnimation animation];
a.duration = 10;
[logoLayer addAnimation:a forKey:@"opacity"];
[logoLayer setOpacity:0];
}

请注意,为了以防万一,我什至延迟了对动画代码的调用。而且我还得到了 10 秒的值。这对于淡入淡出是荒谬的。不过……淡入淡出大约需要 0.2 秒。

有什么想法吗?

最佳答案

CABasicAnimation 实际上并没有做任何事情,因为你没有给它一个 fromValuetoValue;当你设置图层的不透明度时,它只是动画,因为在 Core Animation 图层上设置属性会触发隐式动画,其默认持续时间约为四分之一秒。你想要做的是这样的:

- (void)fadeOutLogo
{
[CATransaction begin];
[CATransaction setAnimationDuration:2];
[logoLayer setOpacity:0];
[CATransaction commit];
}

关于ios - 更改 ViewDidAppear 上的核心动画持续时间似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9038500/

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