3

我真的在尽力做到最好,但我真的无法找出我的代码出了什么问题。我进行了很多搜索,但我想我只是无法理解一些客观的 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。

欢迎帮助,

高捷。

4

2 回答 2

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.
}
于 2010-02-12T19:05:04.727 回答
0

我不同意另一个答案中的第一条语句,即“如果您将图像添加到名为“Default.png”的项目中,它将充当启动画面。

Default.png 是启动图像。Apple HIG特别区分了启动图像和启动画面。

特别是,它说

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

  • “应用程序入口体验”,例如闪屏
  • 关于窗口
  • 品牌元素,除非它们是应用程序首屏的静态部分

因此,对于启动屏幕,使用NSTimer或 按钮让用户关闭启动屏幕。

于 2012-09-12T09:16:15.850 回答