Xcode позволяет создавать экран запуска в файлах .xib
через Interface Builder. Возможно ли выполнить некоторый код с помощью xib, как в обычных контроллерах вида? Было бы здорово, если бы мы могли установить разные тексты/изображения/etc при запуске приложения.
Выполнить код на экране запуска
Ответ 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, когда это будет сделано.
Надеюсь, что это поможет!