LaunchScreen.storyboard
— это специальный интерфейс, который iOS показывает во время запуска приложения до полной загрузки основного UI. Это замена статическим Launch Images (которые использовались до iOS 8).
Нет, и вот почему:
Архитектурные ограничения:
Запрет на исполнение кода:
// Такой код НЕ БУДЕТ работать
class CustomLaunchController: UIViewController {
@IBOutlet weak var titleLabel: UILabel! // Не подключится
override func viewDidLoad() {
super.viewDidLoad()
titleLabel.text = "Loading..." // Не выполнится
}
}
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
let fakeLaunchVC = UIStoryboard(name: "FakeLaunch", bundle: nil).instantiateInitialViewController()
window?.rootViewController = fakeLaunchVC
window?.makeKeyAndVisible()
// Через 2 сек заменяем на основной интерфейс
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
let mainVC = MainViewController()
self.window?.rootViewController = mainVC
}
return true
}
LaunchScreen.storyboard
— это исключительно статический ресурс, предназначенный только для визуального отображения во время запуска приложения. Любые попытки добавить динамическое поведение или кастомный код обречены на провал из-за архитектурных ограничений iOS. Для сложных сценариев загрузки нужно создавать отдельный "фейковый" экран в основном потоке приложения.