Подтвердить что ты не робот

Выполнить код на экране запуска

Xcode позволяет создавать экран запуска в файлах .xib через Interface Builder. Возможно ли выполнить некоторый код с помощью xib, как в обычных контроллерах вида? Было бы здорово, если бы мы могли установить разные тексты/изображения/etc при запуске приложения.

4b9b3361

Ответ 1

Нет, это невозможно.

Когда отображается экран запуска, ваше приложение будет находиться в состоянии загрузки.

Даже если - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions не будет полностью выполнен во время отображения экрана запуска.

Итак, ясно, что у вас нет доступа к вашему приложению, и поэтому на этом этапе вы не можете выполнить какой-либо код.

Ответ 2

Я пытался сделать то же самое здесь.:)

Мне действительно понравились некоторые приложения, в которых они делают небольшой динамический приветственный текст и изображение каждый раз, когда приложение запускается, например, "Ты хорошо выглядишь сегодня!", "Сегодня пятница, прекрасный день" и т.д., что очень мило.

Я сделал поиск, ниже - как это сделать: (Мой код XCode 7 с файлом launchscreen.xib)

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var customizedLaunchScreenView: UIView?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        // Override point for customization after application launch.
        application.statusBarHidden = true

        // customized launch screen
        if let window = self.window {
            self.customizedLaunchScreenView = UIView(frame: window.bounds)
            self.customizedLaunchScreenView?.backgroundColor = UIColor.greenColor()

            self.window?.makeKeyAndVisible()
            self.window?.addSubview(self.customizedLaunchScreenView!)
            self.window?.bringSubviewToFront(self.customizedLaunchScreenView!)
            UIView.animateWithDuration(1, delay: 2, options: .CurveEaseOut,
                                       animations: { () -> Void in
                                        self.customizedLaunchScreenView?.alpha = 0 },
                                       completion: { _ in
                                        self.customizedLaunchScreenView?.removeFromSuperview() })
        }

        return true
    }

// other stuff ...

}

Просто делайте то, что вы хотели показать, текст, изображения, анимации и т.д. внутри customizedLaunchScreenView.

В конце запуска просто затушите этот настроенный UIView с помощью изменения значения альфа, а затем полностью удалите его.

Как здорово это? Мне это очень нравится!

Надеюсь, что это поможет.

Ответ 3

Я также пытался добиться этого. Я попробовал следующее, это дает задержку в пару секунд, но работает для меня.

  • Создайте и установите экран запуска в настройках проекта.
  • Создайте контроллер представления с пользовательским классом (SplashViewController) и установите его в качестве стартового контроллера просмотра в раскадровке.
  • Добавьте в контейнер представление контейнера и установите его на полный экран.
  • Установите встроенный сегмент в ссылку раскадровки.
  • Выберите ссылку Storyboard и установите экран запуска в свойстве StoryBoard у инспектора атрибутов.
  • Выполняйте все, что угодно, в SplashViewController (воспроизведение анимации или сеанса проверки и т.д.) и выполняйте segue, когда это будет сделано.

Надеюсь, что это поможет!