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