iPhone启动画面

3
我很努力地想尽全力,但我确实找不出我的代码哪里出了问题。我做了很多搜索,但我猜我只是无法理解一些Objective C的基础知识;)
我的第一个问题与下面的代码有关:
[window addSubview:tabBarController.view];

UIImage *image = [UIImage imageNamed:@"lol.png"];
UIImageView *defaultImage = [[UIImageView alloc] initWithImage:image];

这样做有什么不同吗:

[window addSubview:defaultImage];

或者这样:
[tabBarController.view addSubview:defaultImage];

我的第二个问题是关于创建启动屏幕。我尝试自己做,但我就是找不出哪里出了问题(我们在appDelegate中):

[window addSubview:tabBarController.view];

UIImage *image = [UIImage imageNamed:@"lol.png"];
UIImageView *defaultImage = [[UIImageView alloc] initWithImage:image]; 

[window addSubview:defaultImage];
[window makeKeyAndVisible]; //makes the window visible right ?

UIImage *image2 = [UIImage imageNamed:@"lol2.png"];
UIImageView *pubImage = [[UIImageView alloc] initWithImage:image2];

[UIView setAnimationDelegate:self];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window cache:YES]; //not sure about the forView:window ...

[defaultImage removeFromSuperview];
[window addSubview:pubImage];

[UIView commitAnimations];

嗯,我猜应该是因为我调用了“makekeyandvisible”函数,窗口才会显示出来并向用户展示动画......

好吧,我似乎还缺少一步,因为它不起作用 :D。

欢迎帮助解决问题,

Gauthier。


如果您将此拆分为多个问题,可能会获得更多关注……而且,似乎您正在尝试动画化某些内容,而不是使用闪屏。那是什么? - John M. P. Knox
我想要从默认图像(defaultImage)切换到发布图像(pubImage)。 - gotye
我尝试过使用NSTimer来完成同样的事情。但我仍然想知道如何在没有计时器的情况下完成它。是否有其他方法可以实现这个目标? - Mickey Shine
2个回答

3
如果您将一张名为“Default.png”的图片添加到项目中,它将作为启动画面。
强制用户观看屏幕的时间超过必要时间通常被认为是不好的。
如果您仍想添加一个启动画面,使用addSubview:应该可以正常工作,如果您想要动画效果,您可能需要查看CATransitions而不是UIView动画。
将启动画面添加到窗口或主视图控制器对用户来说应该是相同的。
编辑: 尝试这个代码片段--您需要#include 并添加QuartzCore框架。
// Using a CATransition
    CATransition* transition = [CATransition animation];
    transition.delegate = self; // if you set this, implement the method below
    transition.duration = 0.3;
    transition.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseOut];
    transition.type = kCATransitionMoveIn;
    transition.subtype = kCATransitionFromRight;
    [self.view.layer addAnimation: transition forKey: nil];
    [self.view addSubview: theNewView];

如果需要在过渡完成时执行某些操作,请添加以下代码:

#pragma mark -
#pragma mark CAAnimation Delegate Methods
- (void)animationDidStop: (CAAnimation*)theAnimation finished: (BOOL)flag
{
    // Whatever you need to do when the animation is done.
}

谢谢你的回答,但我实际上想知道出了什么问题;)我的意思是,对我来说,这段代码应该可以正常工作,所以我想通过理解其中的问题来提高自己的技能!当我有空的时候,我会看一下你的CATransitions,感谢你! - gotye
我觉得我可能有一个解决方案......这个翻转效果应该在模拟器上工作吗?!? - gotye
你看到了什么行为?图片是否显示出来了?只是动画没有工作吗?还是什么都没有显示出来? - jessecurry
尝试使用我发布的代码获取一些动画效果,搜索文档以查看所有可用类型的 kCATransition。 - jessecurry
它完美地运行了 ;) 但问题是,我想要一个翻转动画,而使用CATransition目前不可能... - gotye
显示剩余2条评论

0

我不同意其他答案中第一个声明的说法:“如果您向项目中添加名为“Default.png”的图像,则会作为闪屏屏幕。”

Default.png 是启动画面。Apple HIG明确区分了启动画面和闪屏屏幕。

特别是,它说:

避免将您的启动图像用作提供以下内容的机会:

  • “应用程序入口体验”,例如闪屏屏幕
  • About 窗口
  • 品牌元素,除非它们是您的应用程序第一个屏幕的静态部分

因此,对于闪屏屏幕,请使用 NSTimer 或一个按钮来让用户关闭闪屏屏幕。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接