ios - ui設計 - xcode navigation bar height




使用iOS 11中增加的導航欄標題 (4)

只需在導航欄屬性檢查器中選中“首選大標題”即可

iOS 11 Beta 1幾乎為所有系統應用程序使用增加的導航欄標題(它開始在iOS 10和音樂應用程序中執行此操作)。 我想知道Apple是否有iOS 11的公共API,或者它現在是否會保密。

行為是標題具有增加的字體大小,左對齊並且一旦用戶向下滾動就會移動到導航欄。 我在這裡的消息應用程序中附加了一些顯示此行為的屏幕:

雖然到目前為止我在 UINavigationControllerUINavigationBar 找不到任何引用,但也許有人知道更多細節!


對iOS 11的 UINavigationBar API所做的唯一更改是僅更 prefersLargetitles 。 檢查 here

您可以通過一個小的更改對自己的應用程序執行此操作:在IB中為您的導航欄選中“首選大標題”,或者如果您希望在代碼中使用它

navigationController?.navigationBar.prefersLargeTitles = true

編輯

如果需要更改大標題的文本屬性,則需要在 UINavigationBar 上使用新的 largeTitleTextAttributes 屬性:

UINavigationBar.appearance().largeTitleTextAttributes = [
    NSForegroundColorAttributeName: UIColor.white
]

Swift 4.2的更新:

由於 NSForegroundColorAttributeName 已重命名為 NSAttributedString.Key.foregroundColor ,請使用:

  UINavigationBar.appearance().largeTitleTextAttributes = [
      NSAttributedString.Key.foregroundColor: UIColor.black
  ]

UINavigationBar 有一個 prefersLargeTitles: Bool 屬性。 文檔在這裡

class UINavigationBar {
   var prefersLargeTitles: Bool
}

UINavigationItem 有一個 largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode 屬性。 文檔在這裡

class UINavigationItem {
   var largeTitleDisplayMode: LargeTitleDisplayMode
}

這兩個都可以在Interface Builder中修改。

要打開此行為,請將 navigationController.navigationBar.prefersLargeTitles 設置為 true 。 然後,您可以通過設置 navigationItem.largeTitleDisplayMode 來控制導航控制器堆棧中的每個單獨的視圖控制器。

Apple的一般設計指南是不應該在任何地方使用大型標題(例如,Clock應用程序不使用它們),並且通常優選的是只有導航控制器的第一級使用大標題。 但是,這些只是一般指導原則。

Cocoa Touch視頻中的新內容 (7:37)中介紹了大型標題。


if #available(iOS 11.0, *) {
    self.navigationController?.navigationBar.prefersLargeTitles = true
    self.navigationItem.largeTitleDisplayMode = .always
} else {
    // Fallback on earlier versions
}

請注意,測試版1中存在一些錯誤,導致只有在手動向上滾動時才會顯示大標題。







ios11