无缝集成美观且功能强大的视图控制器到您的应用中,只需滑动手指即可访问。此项目的灵感来源于 David Smith 和他的精美应用 Check The Weather。
于 2012 年 11 月 8 日增加了对 iPad 的支持,并提供了示例。
查看演示 请原谅图形问题。
将包含的 RNSwipeViewController
文件夹拖入您的项目中。然后,在 链接二进制与库 下包含以下框架:
就是这样。
在提供的示例中,我已经通过 Storyboards 设置了滑动控制器。然而,您应该能够使用 NIBs 或纯代码创建您的控制器。使用滑动控制器与使用 UINavigationController
类似,其中 RNSwipeViewController 是子视图控制器的一个 容器。所有交互逻辑都在滑动控制器中控制。您应用程序的所有逻辑都应包含在您的子视图控制器中。
我还会推荐像我在示例中那样对 RNSwipeViewController 进行子类化。但是,您不必这样做。
创建必要的视图控制器并将它们分配给滑动控制器各自的侧面。 RNSwipeViewController 将为您处理手势的启用和禁用。
self.centerViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"centerViewController"];
self.leftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"leftViewController"];
self.rightViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"rightViewController"];
self.bottomViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"bottomViewController"];
经过最小努力,您的视图现在已经设置好了。
如果您想避免使用 Storyboards(我并不责怪您),可以在代码中设置一切。下面是一个来自我的应用程序的 AppDelegate 中的示例。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// PTMasterController is a subclass of RNSwipeViewController
PTMasterController *masterController = [[PTMasterController alloc] init];
PTSchemeController *scheme = [[PTSchemeController alloc] init];
PTUtilityController *utility = [[PTUtilityController alloc] init];
PTWritingController *writing = [[PTWritingController alloc] init];
masterController.centerViewController = writing;
masterController.rightViewController = utility;
masterController.leftViewController = scheme;
masterController.leftVisibleWidth = kGridSize + 3 * kPadding;
masterController.rightVisibleWidth = kGridSize * 2 + 3 * kPadding;
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = masterController;
self.window.backgroundColor = [UIColor underPageBackgroundColor];
[self.window makeKeyAndVisible];
return YES;
}
在 iPhone 4 或更新的设备上,您可以期望有 不错的 性能。然而,在实际的设备(4S+)上,您应该期望有 60fps 的性能。
您可以在运行时自定义每个视图控制器面板的宽度。确保您视图控制器中的视图比您设备的宽/高要小。
@property (assign, nonatomic) CGFloat leftVisibleWidth; // default 200
@property (assign, nonatomic) CGFloat rightVisibleWidth; // default 200
@property (assign, nonatomic) CGFloat bottomVisibleHeight; // default 300
您还可以包含有用的 UIViewController+RNSwipeViewController 类别,以便更容易查找和使用滑动控制器。只需将.h/.m文件导入您的控制器,并调用swipeController
属性。
@implementation YourViewController
- (IBAction)toggleLeft:(id)sender {
[self.swipeController showRight];
}
@end
我包括了一些辅助工具,以防您需要知道何时以及何时显示(或隐藏)视图控制器。请查看文档以获取有关代理的帮助。以下列出了可用的NSNotificationCenter
密钥。
NSString * const RNSwipeViewControllerLeftWillAppear;
NSString * const RNSwipeViewControllerLeftDidAppear;
NSString * const RNSwipeViewControllerRightWillAppear;
NSString * const RNSwipeViewControllerRightDidAppear;
NSString * const RNSwipeViewControllerBottomWillAppear;
NSString * const RNSwipeViewControllerBottomDidAppear;
NSString * const RNSwipeViewControllerCenterWillAppear;
NSString * const RNSwipeViewControllerCenterDidAppear;
这里唯一的真正KVO用途属性是isToggled
。如果有更多选项的需求,我会添加它们。
您的左、右和底部视图控制器可以选择性地遵守RNRevealViewControllerProtocol
协议,以接收有关视图控制器展示进度的更新。百分比是一个整数0到100。此协议使用的唯一方法是
- (void)changedPercentReveal:(NSInteger)percent;
示例更新了左右控制器的视图。
如果您想了解您的滑动控制器当前的外观,可以要求visibleState
属性显示什么。可能性如下
RNSwipeVisibleLeft
RNSwipeVisibleCenter
RNSwipeVisibleRight
RNSwipeVisibleBottom
或者,如果您需要直接访问展示的视图控制器,您可以这样做。
UIViewController *visibleController = self.swipeController.visibleController;
如果您已经在这个实时应用中使用了这个项目,请让我知道!看到别人接受我的工作并且尽情发挥,没有什么能让我更快乐。
查看LICENSE