Xcode 11 & iOS13,使用 UIKIT 不能改变 UIViewController 的背景颜色

Posted

技术标签:

【中文标题】Xcode 11 & iOS13,使用 UIKIT 不能改变 UIViewController 的背景颜色【英文标题】:Xcode 11 & iOS13, using UIKIT can't change background colour of UIViewController 【发布时间】:2019-10-05 18:59:13 【问题描述】:

所以我在 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:App进入ViewController,可以在控制台打印,但是黑屏。

【问题讨论】:

【参考方案1】:

并将 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

代码运行,但 window 属性不是您应用的窗口,所以您所做的一切毫无意义。该窗口现在属于 场景委托。这就是您需要创建窗口并设置其根视图控制器的地方。

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()                 
        

【讨论】:

您好@matt先生,我最初在应用程序启动时使用了上述代码,但我很困惑如何在登录后使用此代码并且需要设置主视图控制器。 @SagarChauhan github.com/mattneub/RegistrationExample

以上是关于Xcode 11 & iOS13,使用 UIKIT 不能改变 UIViewController 的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

辅助功能检查器无法在 MacOS Catalina 和 Mojave 上的 Xcode 11.x、iOS 13.x 上运行

Google 和 Facebook 登录控制器在 Xcode 11 iOS 13 中以模态方式呈现

升级到 XCode 13(和 iOS 15)后选项卡和导航栏发生变化

iOS - OC & Xcode

2021-11-17 xcode12.3 &xcode13.1 下lipo合并framework问题

XCode 11.3 崩溃,iOS 13.2.2 模拟器 iPhone X 和 watchOS 4.2 Apple Watch 42mm