测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可 | MIT |
发布上次发布 | 2014年12月 |
由 Bradley David Bergeron 维护。
BDBSplitViewController 是 UISplitViewController 的一个很好的直接替代,它带有一些实用的功能。
BDBSplitViewController 只包含少数几个简单属性和方法,可以帮助您快速使您的应用运行良好并具有良好外观。请查看包含的演示应用,以便快速学习如何在您的应用中实现它!
您可以使用编程方式、XIBs 或 Storyboards 来实例化新的 BDBSplitViewController 实例,具体取决于您喜欢的界面开发方式。如果您选择编程方式,请确保在主和详细视图控制器的头文件或实现文件顶部添加 #include "BDBSplitViewController.h"
。必须这样做,以便 Xcode 可以注册 BDBSplitViewController 的方法和属性,否则它会认为您正在尝试访问标准 UISplitViewController 的方法和属性。
+ (instancetype)splitViewWithMasterViewController:(UIViewController *)mvc detailViewController:(UIViewController *)dvc;
+ (instancetype)splitViewWithMasterViewController:(UIViewController *)mvc detailViewController:(UIViewController *)dvc style:(BDBMasterViewDisplayStyle) style;
- (id)initWithMasterViewController:(UIViewController *)mvc detailViewController:(UIViewController *)dvc;
- (id)initWithMasterViewController:(UIViewController *)mvc detailViewController:(UIViewController *)dvc style:(BDBMasterViewDisplayStyle)style;
为了简化实现过程,我创建了一个 UIViewController 子类,称为 BDBDetailViewController。它所做的只是实现 splitViewController:shouldHideViewController:inOrientation:
代理方法,以正确处理设备旋转并保持主视图的可见状态。对于您的详细视图,您可以选择从 BDBDetailViewController 继承或重新实现代理方法。考虑到它已经为您准备好了,您会使用它,对吧?
为了简化主和详细视图之间的通信,您可以使用 masterViewController
和 detailViewController
属性。是的,如果您需要,您甚至可以更改详细视图!
@property (nonatomic, strong, readonly) UIViewController *masterViewController;
@property (nonatomic, strong) UIViewController *detailViewController;
使用一对简单的方法可以显示和隐藏主视图。
- (void)showMasterViewControllerAnimated:(BOOL)animated completion:(void (^)(void))completion;
- (void)hideMasterViewControllerAnimated:(BOOL)animated completion:(void (^)(void))completion;
最后,如果您需要确定主视图是否可见,请使用 masterViewIsHidden
属性。
@property (nonatomic, assign, readonly) BOOL masterViewIsHidden;
要更改 BDBSplitViewController 显示主和详细视图的方式,您可以更改 masterViewDisplayStyle
属性。
typedef enum {
BDBMasterViewDisplayStyleNormal,
BDBMasterViewDisplayStyleSticky,
BDBMasterViewDisplayStyleDrawer
} BDBMasterViewDisplayStyle;
常规样式模拟标准 UISplitViewController 的行为,并增加了通过命令显示和隐藏主视图的功能。设备旋转将会重置主视图的显示状态。
固定允许在不受到设备旋转影响的情况下,将主视图固定打开或关闭。
抽屉是我为 BDBSplitViewController 创建的原始样式。详细视图占据整个屏幕,主视图滑入详细视图上。主视图可见时,详细视图变暗。
@property (nonatomic, assign) BOOL masterViewShouldDismissOnTap;
要快速关闭主视图,用户可以简单地点击变暗的详细视图。对于常规和固定样式,默认为NO,对于抽屉为YES。
@property (nonatomic, assign) BOOL detailViewShouldDim;
当显示主视图控制器时,详细视图变暗。对于常规和固定样式,默认为NO,对于抽屉为YES。
@property (nonatomic) CGFloat detailViewDimmingOpacity;
如果您想更改默认的变暗不透明度,可以这样做。默认值为0.4。如果没有将detailViewShouldDim
设置为YES,则不会产生影响。
@property (nonatomic) CGFloat masterViewAnimationDuration;
定制主视图显示/隐藏动画的持续时间。默认为0.3秒。
BDBSplitViewController由Bradley David Bergeron提供。干杯!