iOS 11 SDK 介紹

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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容