RNSwipeViewController 0.2.0

RNSwipeViewController 0.2.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

未声明 维护。



  • Ryan Nystrom

无缝集成美观且功能强大的视图控制器到您的应用中,只需滑动手指即可访问。此项目的灵感来源于 David Smith 和他的精美应用 Check The Weather

于 2012 年 11 月 8 日增加了对 iPad 的支持,并提供了示例。

查看文档

查看演示 请原谅图形问题。

安装

将包含的 RNSwipeViewController 文件夹拖入您的项目中。然后,在 链接二进制与库 下包含以下框架:

  • QuartzCore.framework

就是这样。

使用

在提供的示例中,我已经通过 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

委托、通知和KVO

我包括了一些辅助工具,以防您需要知道何时以及何时显示(或隐藏)视图控制器。请查看文档以获取有关代理的帮助。以下列出了可用的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