navigation bar large title,放大的 navigation bar
範例: Setting App
controller 個別控制 navigation bar 是否放大
讓 navigation bar 放大。
將 navigation bar 的 prefersLargeTitles 設成 true。
open var prefersLargeTitles: Bool
每個頁面的 navigation item 可控制 navigation bar 是否放大,透過 largeTitleDisplayMode。
open var largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMod
automatic : 以前一頁 navigation item 的 largeTitleDisplayMode 為準。
always: 放大。
never: 不放大。
public enum LargeTitleDisplayMode : Int {
case automatic
case always
case never
}
捲動後 navigation bar 縮小
當畫面上的 Scroll View, Table View, Collection View, Text View 捲動時,都可以讓 navigation bar 縮小。
捲動後在 navigation bar 裡顯示 search bar
透過 navigation item 的 2 個屬性。
open var searchController: UISearchController?
open var hidesSearchBarWhenScrolling: Bool
Safe Area
View 的 safe area 控制內容呈現的範圍。
class UIView {
var safeAreaLayoutGuide: UILayoutGuide { get }
var safeAreaInsets: UIEdgeInsets { get }
func safeAreaInsetsDidChange()
}
勾選 Use Safe Area Layout Guides 後,Top Layout Guide 和 Bottom Layout Guide 被拿掉,變成使用 Safe Area。
範例 1:
圖片的上下左右間距,分別對應到 Safe Area 的 trailing,leading,bottom 和 top。
範例 2:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print(view.safeAreaInsets)
print(view.safeAreaLayoutGuide)
}
標準大小的 navigaiton bar 時,safe area 的 top inset 是 64
UIEdgeInsets(top: 64.0, left: 0.0, bottom: 0.0, right: 0.0)
放大版的 navigaiton bar 時,safe area 的 top inset 是 116。
UIEdgeInsets(top: 116.0, left: 0.0, bottom: 0.0, right: 0.0)