UISheetPresentationController

Molder
Aug 29, 2021

在WWDC21 Apple 推出了新的頁面操作方式,個人覺得這項功能比較像是頁面在進行 present 後的進化版操作,多了一些參數調整顯示畫面的方式。

限制: iOS15

先來看看實際效果

實作

  1. UISheetPresentationController 是包在 UIKit裡所以不用特別 import
  2. 首先建立你想推出的VC,此範例是推出PHPickerViewController 或是WebViewController
  3. 針對將要推出的 VC 找 sheetPresentationController 屬性
let web = WebViewController()if let sheet = web.sheetPresentationController {
}

4. 設定 sheet 內容

4.1 detents 參數:設定允許 sheet 可拉動的範圍,只有 medium 跟 large 兩種

4.2 prefersGrabberVisible參數:是否顯示移動條

4.3 largestUndimmedDetentIdentifier參數:讓背後 VC 不會因為sheetPresentationController在拉動時變暗,分 medium 跟 large 兩種時候

4.4 prefersScrollingExpandsWhenScrolledToEdge參數:

sheetPresentationController 向上滑動時,會觸發模式的切換 medium -> large

但原本的只是想滑動 sheetPresentationController 裡面的內容而不是切換模式

這個屬性可以避免這問題

左邊是設False,右邊是設True

4.5 preferredCornerRadius參數:可客制圓角大小

4.6, 4.7 prefersEdgeAttachedInCompactHeight 和widthFollowsPreferredContentSizeWhenEdgeAttached 參數:以下兩項是在 device orientation left or right 才看得出來,左邊是都未設定

中間是 prefersEdgeAttachedInCompactHeight

右邊是 widthFollowsPreferredContentSizeWhenEdgeAttached

--

--