UISplitViewController 是 UIKit 中的一個非常實用的控制器,它是用於在 iPad 及 iPhone Plus 等大屏幕設備上實現主從布局的關鍵控制項。本文將從多個方面探討 UISplitViewController 的使用方法以及注意事項。
一、使用 UISplitViewController 的基本步驟
1、創建 UISplitViewController 對象及其子控制器
func configureSplitViewController() {
let masterViewController = MasterViewController()
let detailViewController = DetailViewController()
let splitViewController = UISplitViewController()
splitViewController.viewControllers = [masterViewController, detailViewController]
splitViewController.preferredDisplayMode = .allVisible
splitViewController.delegate = self
window?.rootViewController = splitViewController
}
2、設置 UISplitViewController 的 viewControllers 屬性
在創建 UISplitViewController 後,需要設置它的 viewControllers 屬性,將左邊的導航控制器(或主控制器)和右邊的詳細控制器(或從控制器)添加進去。
3、設置 UISplitViewController 的 preferredDisplayMode 屬性
preferredDisplayMode 屬性決定了在何種情況下顯示導航欄。通過設置 preferredDisplayMode 屬性,可以實現選擇在橫屏時始終顯示導航欄,在豎屏時只顯示按鈕的效果。
4、設置 UISplitViewController 的 delegate 屬性
UISplitViewController 需要實現 UISplitViewControllerDelegate 協議才能響應相關事件。常見的事件有:將要隱藏從控制器、將要顯示從控制器、將要隱藏主控制器等。
二、使用 UISplitViewController 的注意事項
1、UISplitViewController 只適用於 iPad 或 iPhone Plus 等大屏幕設備。在 iPhone 或其他小屏幕設備上,UISplitViewController 會自動轉換為 UINavigationController 的形式。
2、在 UISplitViewController 中,主控制器的寬度始終不變,而從控制器可以根據屏幕的寬度自動調整寬度,保證主控制器和從控制器的寬度比例協調。
3、在橫屏顯示時,UISplitViewController 通常顯示導航欄,而在豎屏顯示時通常只顯示按鈕,當用戶點擊按鈕時,會呈現出從控制器的內容。
4、在 iOS 14 中,蘋果推出了 columnLayoutAppearance 屬性,該屬性可以設置控制器在列布局(SplitView)中的外觀。可以設置背景顏色、tintColor、文字等相關屬性。
if #available(iOS 14.0, *) {
let appearance = UISplitViewController.ColumnDisplayMode.oneBesideSecondary
splitViewController.preferredSplitBehavior = .tile
splitViewController.primaryBackgroundStyle = .sidebar
splitViewController.columnLayout = .twoColumns
splitViewController.primaryEdge = .trailing
let appearance = UISplitViewControllerColumnLayoutAppearance()
appearance.backgroundColor = .white
appearance.trailingAccessory = .outlineDisclosureOptions
splitViewController.primaryColumnWidth = 320
splitViewController.secondaryColumnWidth = .flexible
splitViewController.secondaryBackgroundStyle = .sidebar
splitViewController.secondaryBackgroundStyle = .none
splitViewController.columnLayoutAppearance = appearance
}
三、顯示、隱藏從控制器
1、在 splitViewController(_:willHide:with:) 中實現從控制器的顯示
當從控制器即將隱藏時,可以在 splitViewController(_:willHide:with:) 中實現從控制器的顯示。
func splitViewController(_ splitViewController: UISplitViewController, willHide secondaryViewController: UIViewController, with coordinator: UISplitViewControllerCoordinator) {
// 顯示從控制器
}
2、在 splitViewController(_:willShow:with:) 中實現從控制器的隱藏
當從控制器即將顯示時,可以在splitViewController(_:willShow:with:)中實現從控制器的隱藏。
func splitViewController(_ splitViewController: UISplitViewController, willShow secondaryViewController: UIViewController, with coordinator: UISplitViewControllerCoordinator) {
// 隱藏從控制器
}
四、調整主控制器和從控制器的大小
通過設置 UISplitViewController 的 primaryColumnWidth、minimumPrimaryColumnWidth、maximumPrimaryColumnWidth、secondaryColumnWidth 等屬性,可以實現主控制器和從控制器的大小調整。
if #available(iOS 14.0, *) {
splitViewController.primaryColumnWidth = 320
splitViewController.minimumPrimaryColumnWidth = 200
splitViewController.maximumPrimaryColumnWidth = 400
splitViewController.secondaryColumnWidth = 300
} else {
splitViewController.preferredPrimaryColumnWidthFraction = 0.3
}
五、總結
UISplitViewController 是 UIKit 中非常實用的控制器,可以實現 iPad 上的主從布局。在使用 UISplitViewController 時,需要注意它的屬性以及 UISplitViewControllerDelegate 協議的實現方法。通過學習本文,相信大家能對 UISplitViewController 有更深入的理解。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/199503.html
微信掃一掃
支付寶掃一掃