2010-02-12 111 views
3

我真的想尽我所能,但我无法真正了解我的代码中出了什么问题。我做了很多的搜索,但我想我只是不明白一些Objective C的基础知识;)Iphone初始屏幕

我的第一个问题是有关代码如下:

[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。

+0

如果你把这个问题分解成多个问题,你可能会得到更多的关注......而不是闪屏,它看起来像你试图动画的东西。它是什么? – 2010-02-12 19:07:44

+0

的确,我想从defaultImage切换到pubImage。 – gotye 2010-02-12 20:16:31

+0

我试图做同样的事情,并由NSTimer完成。但我仍然想知道如何在没有计时器的情况下做到这一点。有没有其他方法可以实现这一点? – 2010-03-18 06:35:07

回答

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. 
} 
+0

谢谢你的回答,但我真的很想知道这是怎么回事;)我的意思是,对我来说,这段代码应该工作得很好,所以我想通过理解它的内容来提高我的技能! 我会在空闲时间看看你的CATransitions,为此欢呼! – gotye 2010-02-12 19:10:36

+0

我想我可能有一个解决方案......这个翻转效果应该在模拟器上工作吗?!? – gotye 2010-02-12 20:40:20

+0

你看到什么行为?图像是否显示出来?它只是动画不工作?或者没有显示出来? – jessecurry 2010-02-12 21:11:11

0

我不同意另一个答案中的第一个陈述,那就是'如果您将图像添加到名为“Default.png”的项目中,它将用作启动屏幕。

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

特别是,它说,使用

避免你的启动图像为契机,以提供:

  • “应用入行经历,”如闪屏
  • 一个关于窗口
  • 品牌元素,除非它们是应用程序第一屏的静态部分

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