【问题标题】:Change the launch image of an app on every launch在每次启动时更改应用程序的启动图像
【发布时间】:2013-06-04 08:10:18
【问题描述】:

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

  1. 在plist配置文件中设置我的启动镜像名称,每次都替换镜像文件。

  2. 每次app启动时删除plist中的launch image属性,显示另一个imageview或uiview,改变imageview的图片;

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

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

【问题讨论】:

  • 我不确定这两种方法都会被苹果接受。我很确定您不是要更改启动图像,除非您对苹果应用商店进行了更新。我很确定我在某处读过这篇文章,但我不记得在哪里,所以目前我没有什么可以支持的。
  • 您还可以使用解决方案 #2 与“常见”启动画面,以动画成您的新图像?
  • 如果您不提供启动图像,您将被拒绝,并引用人机界面指南“启动图像(所有应用都需要必需)”
  • @rdurand 你的意思是唯一的方法是先显示一个普通的图像,然后在应用程序完全加载后更改另一个图像?

标签: iphone ios objective-c cocoa


【解决方案1】:

我建议您在代码中执行此操作,也就是使用 UIImageView 显示您自己的“虚拟”启动屏幕。

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

选择 UIImageView 方法,我知道它看起来不会那么好,但考虑到 Apple 生态系统施加的限制,它是你能得到的最接近的方法。

【讨论】:

  • 我认为 UIImageView 选项如果处理好动画效果会很好!
  • -1 代表apksAPKs 是安卓而不是 iOS。如果更正将删除。
【解决方案2】:

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

这是因为作为 Apple App Store 提交的一部分,主捆绑包的内容经过加密(想想就是它的拼写方式)签名。所以在修改主包中的内容可能会导致应用程序停止运行。

这也违反了Apple submission guidelines

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

只有在基于设备和/或视网膜显示和/或方向时才能拥有不同的启动图像。

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 启动图像与启动图像不同。启动图像假设在加载时给出应用程序的第一印象。应用启动与正在初始化并显示在屏幕上的实际界面之间的插页式广告。
    • 你喜欢的名字。我同意,但很多人使用启动图像作为启动 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 2012-09-11
    • 2012-07-16
    • 2014-08-07
    • 2016-02-17
    • 2018-04-08
    相关资源
    最近更新 更多