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-hk/n/199503.html