我真的想尽力而为,但我无法真正发现我的代码出了什么问题。我做了很多搜索,但我想我无法理解一些客观的基础知识;)
我的第一个问题与以下代码有关:
[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。
欢迎帮助,
高塞尔。
答案 0 :(得分:3)
如果您将图像添加到名为“Default.png”的项目中,它将充当启动画面。
强制用户不必要地查看屏幕通常被视为不良。
如果你确实想要使用addSubview添加一个:应该可以正常工作,如果你想要动画,你可能想要查看CATransitions而不是UIView动画。
将启动画面添加到窗口或主视图控制器应该对用户显示相同。
修改强>
试试这个片段 - 您需要#include <QuartzCore/QuartzCore.h>
并添加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.
}
答案 1 :(得分:0)
我不同意另一个答案中的第一个陈述,即“如果你向你的项目添加一个名为”Default.png“的图像,它将作为一个闪屏。'
Default.png是启动图像。 Apple HIG专门区分启动图像和启动画面。
特别是,它说
避免使用您的启动图片作为提供的机会:
- “应用程序输入体验”,例如启动画面
- 关于窗口
- 品牌元素,除非它们是应用程序第一个屏幕的静态部分
因此,对于启动画面,请使用NSTimer
或按钮让用户关闭启动画面。