BDBSplitViewController 1.3.1

BDBSplitViewController 1.3.1

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布上次发布2014年12月

Bradley David Bergeron 维护。



BDBSplitViewController 是 UISplitViewController 的一个很好的直接替代,它带有一些实用的功能。

Drawer Demo

使用

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 继承或重新实现代理方法。考虑到它已经为您准备好了,您会使用它,对吧?

为了简化主和详细视图之间的通信,您可以使用 masterViewControllerdetailViewController 属性。是的,如果您需要,您甚至可以更改详细视图!

@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提供。干杯!