【问题标题】:Iphone Splash ScreenIphone 闪屏
【发布时间】:2010-02-12 19:00:14
【问题描述】:

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

欢迎帮助,

高蒂尔。

【问题讨论】:

  • 如果你把它分解成多个问题,你可能会得到更多的关注......而且看起来你正在尝试制作动画而不是启动屏幕。这是什么?
  • 没错,我想从defaultImage翻转到pubImage。
  • 我尝试做同样的事情,结果是由 NSTimer 完成的。但我仍然想知道如何在没有计时器的情况下做到这一点。有没有其他方法可以做到这一点?

标签: iphone objective-c animation splash-screen


【解决方案1】:

如果您将图像添加到名为“Default.png”的项目中,它将充当启动画面。

强迫您的用户看屏幕的时间超过必要的时间通常被认为是不好的。

如果您确实想使用 addSubview: 添加一个,应该可以正常工作,如果您想要动画,您可能需要查看 CATransitions 而不是 UIView 动画。

将启动画面添加到窗口或主视图控制器对用户来说应该是一样的。

编辑: 试试这个 sn-p -- 你需要 #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.
}

【讨论】:

  • 感谢您的回答,但我实际上很愿意知道这出了什么问题;)我的意思是,对我来说,这段代码应该可以正常工作,所以我想通过理解来提高我的技能里面有什么东西!当我有空闲时间时,我会看看你的 CATransitions,为此欢呼!
  • 我想我可能有一个解决方案......这种翻转效果应该在模拟器上工作吗?!?
  • 您看到了什么行为?图像是否显示出来?只是动画不起作用吗?还是什么都没有出现?
  • 尝试我发布的代码以获得一些动画,搜索 kCATransition 的文档以查看所有可用的类型。
  • 效果很好 ;) 但问题是我想要一个翻转动画,目前 CATransition 无法实现...
【解决方案2】:

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

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

特别是,它说

避免使用您的启动图片作为提供的机会:

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

因此,对于初始屏幕,请使用NSTimer 或用户关闭初始屏幕的按钮。

【讨论】:

    猜你喜欢
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    相关资源
    最近更新 更多