以编程方式创建 UINavigationController

Create a UINavigationController programmatically

我创建了一个非常简单的 UINavigationController 应用程序。不使用 IB,只创建两个文件 AppDelegate.swift 和 ViewController.swift。但是结果看起来很奇怪。请查看附图

我使用 XCode 10.2.1。模拟器的屏幕无法完全填满,iphone8模拟器的状态栏放错了地方。

AppDelegate.swift:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    self.window = UIWindow(frame: UIScreen.main.bounds)
    let homeVC = ViewController(nibName: nil, bundle: nil)
    homeVC.title = "HOME"

    let nav = UINavigationController(rootViewController: homeVC)
    self.window?.rootViewController = nav
    self.window?.makeKeyAndVisible()

    return true
}

ViewController.swift:

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = UIColor.yellow
    // Do any additional setup after loading the view.
}

我怎么了?

这看起来像是 iPhone X 和其他应用未优化的情况。你是如何做启动屏幕的?由于我没有看到 LaunchScreen.storyboard,我假设您使用的是图片资源。这是不受欢迎的,因为一旦创建了新的屏幕尺寸,您就需要更新您的应用程序。

TL:DR 将 LaunchScreen.storybooard 用于 Launch Screen File VS Launch Images Source

已编辑:创建一个 LaunchScreen.storyboard 并将其设置为启动屏幕文件