ios淡出启动屏幕(iphone 5友好型)
我想假装每当调用ios淡出启动屏幕(iphone 5友好型),ios,splash-screen,Ios,Splash Screen,我想假装每当调用applicationIDbecomeactive时,主闪屏就会消失,但它不起作用。我做错了什么 - (void)applicationDidBecomeActive:(UIApplication *)application { if(IS_IPHONE_5) splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-568h.png"]]; else
applicationIDbecomeactive
时,主闪屏就会消失,但它不起作用。我做错了什么
- (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 )
#定义为"IPHONE"5(晶圆((双)[[UIScreen mainScreen]边界].size.height-(双)568)
您的代码看起来大致正确;我在几个应用程序中这样做
但是,您希望在ApplicationIDFinishLaunching:options:
中执行此操作,而不是在ApplicationIDBecomeActive:
中执行此操作。只有当应用程序启动且尚未运行时,才有必要在显示启动屏幕时将其淡入淡出。当你的应用程序处于活动状态时,它可能已经在后台——即已经启动了——因此在这种情况下淡出启动屏幕是没有意义的
或者,您是否希望启动屏幕在激活时始终显示,即使它从挂起状态从后台恢复?如果这确实是您的代码,您可能在图像名称中有输入错误。(如果没有,请告诉我们“不工作”是什么意思。)
另外,启动屏幕通常不会在每个
applicationIDBecomeActive:
出现didFinishLaunchingWithOptions:
是您知道自己已启动并且启动屏幕已代表您显示的时间。尝试直接将其添加到窗口中,而不是rootViewController.view
[self.window addSubview:splash];
您可能还需要使用view.transform旋转图像以与启动图像对齐。我发现,从ios6中,您可以获得一个很好的转换
-(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;
}
然后马上在
- (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){
}];
从加载屏幕到现在加载的应用程序屏幕,它会产生一种交叉fadeish效果。奇怪的是,在模拟器中,每次飞溅都会出现,但在设备中,它只在初始加载时出现。很高兴知道。