为什么我的 iOS11 navigationController 不工作

why my iOS11 navigationController doesn't to work

我只想显示一个大标题
我的 ViewController.swift 看起来像:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.backgroundColor = UIColor.white

        title = "Hello world"
        self.navigationController?.navigationBar.prefersLargeTitles = true
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

但是没用。

  let navigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 60))
        navigationBar.backgroundColor = UIColor(red: 46.0/255.0, green: 145.0/255.0, blue: 245.0/255.0, alpha: 1.0)
        
        self.navigationItem.title = "Add Title"
        self.view .addSubview(navigationBar)
    if #available(iOS 11.0, *) {
        self.navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationItem.largeTitleDisplayMode = .always
    } else {
        // Fallback on earlier versions
    }

要在导航栏中显示大标题,您需要 largeTitleDisplayMode .always 添加以下代码行到您的 viewDidLoad 也不要忘记检查 ios11是否

   title = "Hello world"

   if #available(iOS 11.0, *) {
        self.navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationItem.largeTitleDisplayMode = .always
    }

你的UIViewController应该有一个UINavigationController 如果您的 UIViewController 未嵌入 UINavigationController,请执行以下步骤

打开你的故事板 -> select 你的视图控制器 -> 编辑器 -> 嵌入 -> NavigationController

首先,确保您的 ViewControllerUINavigationController 内。

继续检查 IOS 11

title = "Title
if #available(iOS 11.0, *) {
    self.navigationController?.navigationBar.prefersLargeTitles = true
    self.navigationItem.largeTitleDisplayMode = .always

} else { ... }

你的问题是,你需要在导航控制器

中添加你的viewcontroller
window = UIWindow(frame: UIScreen.main.bounds)
let mainController = ViewController()
let navigationController = UINavigationController(rootViewController: mainController)
self.window?.rootViewController = navigationController
self.window?.makeKeyAndVisible()