我想更改每次打开应用程序时的启动图像。我在谷歌上搜索了一下,发现了两种方法:
-
在plist配置文件中设置我的启动图像名称,并每次替换图像文件
-
每次应用启动时删除plist中的launch image属性,显示另一个imageview或uiview,并更改imageview的图像;
第一种方式,一些人说苹果可能会拒绝这个应用程序,或者它可能不会被批准。情况可能是这样吗?
第二种方法,在我的应用程序配置和加载后需要很长时间,并且在加载过程中应用程序显示黑屏。
我建议你在代码中这样做,也就是使用UIImageView显示你自己的"虚拟"启动屏幕。
你想要实现的是不可能的,ipas(因此它们的内容,包括Info.plist)在你存档你的应用程序时被签名。这意味着你所做的任何修改都会破坏签名,所以你需要辞职使它再次可执行。要做到这一点,唯一的方法就是再次为你的内容签名,并再次将应用提交到AppStore,这样你的参数就失效了。
使用UIImageView方法,我知道它看起来不太好,但考虑到苹果的生态系统所施加的限制,这是最接近的方法。
简单的答案是NO您不允许这样做。这是因为你要修改的图像是Default.png
,它是位于项目主包中的启动图像名称,并且不允许编辑/修改/修改iOS项目主包中的文件。
这是因为主包的内容是加密的(想想它是怎么拼写的)作为Apple App store提交的一部分签署的。因此,修改主包中的内容可能会导致应用程序停止运行。
这也违反了苹果提交指南。
虽然有些人建议在启动后通过代码和动画来实现,但你仍然需要一个启动图像,因为这是苹果人机界面指导方针的一部分。所有应用程序必须有一个启动图像。
你可以有不同的启动图像的唯一时间是当你基于设备和/或视网膜显示和/或方向。
这里有一些你可以使用的。
Default.png
Default@2x.png
Default-568h.png or Default-568h@2x.png
Default-Portait.png
Default-Portait@2x.png
Default~ipad.png
Default-Portait~ipad.png
Default@2x~ipad.png
etc
启动图像本身是不可更改的,因为它在你的bundle中。最好的方法是尽快显示一个UIImageView。
这意味着:applicationDidFinishLaunching应该只打开窗口和一个图像视图,然后再安排真正的工作。尽快返回YES——这样,iOS就会认为你的应用已经启动,并用uiimageview
显示你的窗口- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// show the main window, overlay with splash screen + alpha dissolve...
UIImageView *splashScreen = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]];
[self.window addSubview:splashScreen];
[self.window makeKeyAndVisible];
// in the method do all you normally do
[self performSelector:@selector(delayedLaunch:) withObject:options afterDelay:0.1];
[UIView animateWithDuration:0.3 animations:^{splashScreen.alpha = 0.0;}
completion:(void (^)(BOOL)) ^{
[splashScreen removeFromSuperview];
}
];
return YES;
}