ios淡出闪屏(iphone 5友好)
我想要欺骗主屏幕淡出的感觉,只要applicationDidBecomeActive
被调用,但它不工作。我究竟做错了什么?ios淡出闪屏(iphone 5友好)
- (void)applicationDidBecomeActive:(UIApplication *)application
{
if(IS_IPHONE_5)
splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-568h.png"]];
else
splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]];
[self.window.rootViewController.view addSubview:splash];
[UIView animateWithDuration:0.5
animations:^{
splash.alpha = 0;
}
completion:^(BOOL finished) {
[splash removeFromSuperview];
}];
}
然后你需要定义下面的某个地方。我使用项目.pch
,但如果需要,您可以使用标题。
#define IS_IPHONE_5 (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON)
如果这确实是您的代码,您可能在图像名称中有拼写错误。 (如果没有,让我们知道什么“不工作”的意思)。
此外,启动画面通常不会出现每个applicationDidBecomeActive:
。 didFinishLaunchingWithOptions:
是你知道你已经启动并且闪屏已经以你的名义显示的时间。
您的代码看起来正确;我在几个应用程序中这样做。
但是,您希望将其作为applicationDidFinishLaunching:options:
的一部分而不是applicationDidBecomeActive:
。只有在应用程序启动并且尚未运行时才显示启动画面,这只是有意义的。当你的应用程序变为活动状态时,它可能已经在后台 - 也就是已经启动 - 所以在这种情况下淡入淡出的屏幕没有任何意义。
或者,您是否希望启动画面在其变为活动状态时始终显示,即使它从暂停状态的背景中恢复?
尝试将其直接添加到您的窗口而不是rootViewController.view。
[self.window addSubview:splash];
您可能还需要使用view.transform旋转图像以与启动图像对齐。
我发现,从iOS6的你会得到一个很好的过渡在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[UIView animateWithDuration:0.5
delay:0
options: UIViewAnimationCurveEaseOut
animations:^{
self.window.viewForBaselineLayout.alpha = 1; // and at this alpha
}
completion:^(BOOL finished){
}];
即将开始这样做
-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[UIView animateWithDuration:0.2
delay:0
options: UIViewAnimationCurveEaseIn
animations:^{
self.window.viewForBaselineLayout.alpha = 0; // and at this alpha
}
completion:^(BOOL finished){
}];
return YES;
}
然后给出了一个十字架从加载屏幕fadeish效果,现在装应用屏幕。
这是正确的解决方案 – 2016-04-20 13:41:22
奇怪的是,在模拟器中,每次都会出现飞溅,但在设备中它只是在初始加载时。很高兴知道。 – Jacksonkr 2012-02-07 22:38:06