2013-06-04 133 views
2

每次打开时,我都想更改应用程序的启动图像。我搜索谷歌和我发现两种方法:每次启动时更改应用程序的启动图像

  1. 中的plist配置文件设置我的启动图像的名字,每一次更换图像文件。

  2. 每次应用程序启动时,删除plist中的启动图像属性,显示另一个imageview或uiview,并更改imageview的图像;

第一种方式,有人说苹果可能会拒绝该应用程序或者它可能不被批准。这可能是这种情况吗?

第二种方式,在我的应用程序配置和加载并且应用程序在加载过程中显示黑屏时需要很长时间。

+0

我不知道哪种方式会被苹果接受。我非常肯定你不打算改变发布图片,除非你更新了苹果应用商店。我非常确定我已经在某处读过这篇文章,但我不记得在哪里,所以我现在没有什么可以支持它。 – Popeye

+0

您还可以使用解决方案#2与“共同”启动画面来动画到您的新图像? – rdurand

+0

如果您不提供启动图像,请引用人机界面指南“启动图像(所有应用程序需要** **)” – rdurand

回答

7

我建议你在代码中这样做,也就是使用UIImageView显示你自己的“虚拟”启动屏幕。

当你存档你的应用程序时,你想要实现的是不可能的,ipas(以及它们的内容,包括Info.plist)都被签名。这意味着您做出的任何修改都会破坏签名,因此您需要重新签名以使其再次可执行。实现这一目标的唯一方法是再次对您的内容进行签名并将应用程序再次提交给AppStore,这会使您的论点失效。

转到UIImageView的方法,我知道它看起来不那么好,但它是最接近你可以得到苹果生态系统强加的约束。

+0

我认为如果您很好地处理动画,UIImageView选项可以看起来不错! – rdurand

+0

-1用于'apks'。 'APKs'是android不是iOS的。如果更正,将会删除。 – Popeye

+0

删除-1进行更正。 – Popeye

3

简单的答案是你不能这样做。这是因为您必须修改的图像是Default.png,它是位于项目主包中的启动图像名称,不允许编辑/修改/修改iOS项​​目主包中的文件。

这是因为主包的内容是加密的(认为它是如何拼写的)作为Apple App商店提交的一部分进行签名。因此,修改主包中的内容可能导致应用程序停止运行。

这也违背了Apple submission guidelines

此外,虽然有人建议通过动画代码来启动它,但启动后仍然需要启动图像,因为它是苹果人机界面指南的一部分。所有应用程序都必须具有启动图像。

您可以拥有不同的启动图像的唯一时间是当您的设备和/或视网膜显示和/或方向基础。

这里有一些你可以使用的。

Default.png 
[email protected] 
Default-568h.png or [email protected] 
Default-Portait.png 
[email protected] 
Default~ipad.png 
Default-Portait~ipad.png 
[email protected]~ipad.png 
etc 
1

发布图像本身不可更改,因为它在您的包中。最好的方法是尽快显示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; 
} 
+0

启动图像与飞溅不一样。启动图像假设在加载时给出应用程序的第一印象。应用程序启动和正在初始化并放置在屏幕上的实际界面之间的插页式广告。 – Andy

+0

命名它你喜欢什么。我同意但许多人使用启动图像作为飞溅:) –

+0

请务必在投票时留下评论,以便我可以解决任何问题... –

相关问题