Xcode 11 和 iOS13,使用 UIKIT 无法更改 UIViewController 的背景颜色



所以我在 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
}

在我的UIView控制器中,我想设置背景颜色,

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

但结果是模拟器中的黑屏。甚至从其他项目中获取代码也无济于事...... 我之前在其他 Xcode 版本中做过这个,应该有工作。有什么想法吗?

PS:应用程序进入视图控制器,我可以在控制台中打印,但屏幕是黑色的。

并注释了 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()                 
}
}

相关内容

  • 没有找到相关文章

最新更新