避免启动图像闪烁

时间:2009-04-30 08:43:08

标签: objective-c cocoa-touch

我设法设计了一个相当不错的launch image / default.png。但是我注意到它只是闪烁一秒然后进入UI。是否可以对启动图像进行编码并使其动态化?保留在屏幕上直到用户触摸它或按钮。或者这是一个绝对不想做的事情?

4 个答案:

答案 0 :(得分:2)

引用Apple's HIG

“如果你认为遵循这些指导方针会产生一个非常简单,无聊的发射图像,那么你是对的。请记住,发布图像并不意味着提供艺术表达的机会;它只是为了增强用户对您的应用程序的感知能够快速启动并立即可以使用。“

答案 1 :(得分:0)

我个人会做任何事情来使我的应用程序看起来更具响应性,因为这是用户判断“应用程序性能”的主要因素。

因此,推论用户进入用户界面时,必须采取任何措施。

答案 2 :(得分:0)

如果您的应用已准备好在闪光灯中使用,那么就这样吧。将图像放在一个左右的盒子里。不要因任何原因推迟用户访问您的应用。这就是让我想要追捕开发者并且大喊“你在想什么”的东西。

答案 3 :(得分:0)

您可以通过简单地立即重新显示启动屏幕来人为延长启动图像持续时间(显示您的徽标至少x秒,执行初始网络请求等)。

我们在AppDelegate.swift:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
{
    // ...

    // re-initializing LaunchScreen
    let launchScreenView = UIStoryboard(name: "LaunchScreen", bundle: nil).instantiateInitialViewController()!.view!
    launchScreenView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    launchScreenView.frame = window!.rootViewController!.view.bounds
    window?.rootViewController?.view.addSubview(launchScreenView)
    window?.makeKeyAndVisible()
}

部分取自: Present view controller modally at app launch
(请注意,改进可能是使用a separate UIWindow而不是addSubview

不要在其上添加手势识别器,因为用户不希望与之交互。相反,您可以使用计时器来隐藏它。

DispatchQueue.global().asyncAfter(deadline: .now() + 5.0) {
    // remove your launch screen
    launchScreenView.removeFromSuperview()
}