Xcode 11 и iOS13, используя UIKIT, не могут изменить цвет фона UIViewController - PullRequest
0 голосов
/ 05 октября 2019

Итак, я создал новый проект в Xcode11, установил AppDelegate для моего нового VC и прокомментировал код, присутствующий в делегате сцены xxx, чтобы не иметь части UIKit:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        window = UIWindow()
        window?.makeKeyAndVisible()
        let controller = MainVC()
        window?.rootViewController = controller
        return true
    }

В моем UIViewController, который я хотелустановите цвет фона,

import UIKit

class MainVC : UIViewController {
    override func viewDidLoad() {
        view.backgroundColor = .red
        self.view.backgroundColor = .blue
        print("main Screen showing")
        ConfigureUI()
        setupUI()

    }

Но в результате вы получите черный экран в симуляторе. Даже взятие кода из других проектов не помогло бы ... Я делал это раньше в других версиях Xcode и должен был работать. Есть идеи?

PS: приложение попадает в ViewController, я могу печатать в консоли, но экран черный.

1 Ответ

1 голос
/ 05 октября 2019

и прокомментировал код, присутствующий в делегате сцены xxx, чтобы не иметь части UIKit

Вы не должны этого делать. Это ваш код, который нужно указать в нужном месте. Если вы создаете новый проект в Xcode 11, этот код ничего не делает:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    window = UIWindow()
    window?.makeKeyAndVisible()
    let controller = MainVC()
    window?.rootViewController = controller
    return true
}

Код запускает , но свойство окна не является окном вашего приложения, так что вы делаетебессмысленно. Теперь окно принадлежит делегату сцены . Вот где вам нужно создать окно и установить его корневой контроллер вида.

func scene(_ scene: UIScene, 
    willConnectTo session: UISceneSession, 
    options connectionOptions: UIScene.ConnectionOptions) {
        if let windowScene = scene as? UIWindowScene {
            self.window = UIWindow(windowScene: windowScene) 
            let vc = MainVC()                                  
            self.window!.rootViewController = vc             
            self.window!.makeKeyAndVisible()                 
        }
}
...