LESliderController 0.2.1

LESliderController 0.2.1

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2015年10月

Lucas Eduardo 维护。



  • Lucas Eduardo

这是什么

只是一个容器控制器,通过触摸/滑动手势以优雅而独特的方式呈现其他控制器!看看使用它的应用程序的例子

GIF 1

示例项目

要运行示例项目,请克隆仓库,然后首先从 Examples 目录运行 pod install。始终通过 .xcworkspace 文件打开项目。

要求

  • iOS 8 或更高版本
  • 现在,LESliderController 只有在项目在执行期间不允许更改方向的情况下才能良好工作。只有在固定在竖向 OR 横向的应用程序中。

安装

手动

LESliderController 文件夹中的所有文件拖动并复制到您的项目,或者将其添加为 git 子模块。

如何使用

基本用法

LESliderController 的使用非常简单直观。按照以下步骤进行

1) 将您想要作为导航根/容器的控制器编写成 LESliderMainViewController 的子类

@import UIKit;

#import <LESliderController/LESliderMainViewController.h>

@interface MyViewController : LESliderMainViewController

@end

2) 添加按钮以触发到“子”控制器的转换。这可以通过 Interface Builder 或使用代码分配的按钮完成。您甚至可以使用任何类型的 UIViews,只要您使用某种手势识别器触发转换即可。让我们用一个 interface builder 例子继续

@property (weak, nonatomic) IBOutlet UIButton *rightButton;
@property (weak, nonatomic) IBOutlet UIButton *leftButton;

3) 如果您正在使用 storyboad,请在 interface builder 的第三个标签(identity inspector)中为每个您想要通过主视图呈现的“子”设置一个 Storyboard ID

IMG 1

4) 现在,在实际的控制器实现 (.m) 文件中,设置您想要的每个“子”控制器,如下例所示

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIViewController *rightViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"RightViewController"];
    [self registerTriggerView:self.rightButton toViewController:rightViewController onSide:LESliderSideRight];
    [self addSliderGesture:LESliderSideRight toTriggerView:self.rightButton];

    UIViewController *leftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LeftViewController"];
    [self registerTriggerView:self.leftButton toViewController:leftViewController onSide:LESliderSideLeft];
    [self addSliderGesture:LESliderSideLeft toTriggerView:self.leftButton];

}

注意 onSide: 参数。您可以选择 LESliderSideRight 从右向左转换,或者选择 LESliderSideLeft 从左向右转换。

使用此代码片段后,您就可以使用您注册的按钮上的滑动手势呈现控制器了。

5) 实现按钮(或不是使用按钮的情况下使用触摸手势识别器)的动作,以便在触摸时触发过渡。

- (IBAction)leftButtonDidTouch:(id)sender {
    [self showRegisteredViewControllerForTriggerView:sender animated:YES completion:nil];
}


- (IBAction)rightButtonDidTouch:(id)sender {
    [self showRegisteredViewControllerForTriggerView:sender animated:YES completion:nil];
}

6) 最后,在控制器中导入 #import <LESliderController/UIViewController+LESliderChild.h> 文件头,并在任何按钮的动作中调用以下方法以关闭控制器。

#import "UIViewController+LESliderChild.h"

@implementation MyChildViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (IBAction)didTouchBackBtn:(id)sender {
    [self dismissSliderController:YES];
}

@end

高级选项

检查 LESliderMainViewController.h 以查看所有可用属性。您可以使用它们,例如,更改动画的持续时间。

缓存控制器

特别要讨论的是缓存的呈现控制器。基本设置保留对控制器的引用,与 UITabBarController 类似。这意味着,一旦呈现控制器,关闭它,然后再呈现,之前的州将被保留。这可以非常有用,可以避免多次请求数据加载,但可能会导致问题,如果控制器较重且消耗大量内存。

如果是这种情况,您想 avoiding this behaviour,可以在关闭后释放控制器以下设置。

在您的 LESliderMainViewController.h 子类中

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.cacheControllers = NO;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)rightButtonDidTouch:(id)sender {
    UIViewController *rightViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"RightViewController"];
    [self registerTriggerView:self.rightButton toViewController:rightViewController onSide:LESliderSideRight];
    [self showRegisteredViewControllerForTriggerView:sender animated:YES completion:nil];
}

- (IBAction)leftButtonDidTouch:(id)sender {
    UIViewController *leftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LeftViewController"];
    [self registerTriggerView:self.leftButton toViewController:leftViewController onSide:LESliderSideLeft];
    [self showRegisteredViewControllerForTriggerView:sender animated:YES completion:nil];
}

待办事项

  • 重构 LESliderMainViewController.m 文件以允许在执行期间更改方向。

合作

喜欢这个项目吗?有什么缺失或可以改进的地方?请随意贡献:)

  1. 分叉它

  2. 创建您的分支 git checkout -b name-your-feature

  3. 提交它 git commit -m '差异'

  4. 推送它 git push origin name-your-feature

  5. 创建一个拉取请求

作者

卢卡斯·埃德华多,[email protected]

许可证

LESliderController 在 MIT 许可证下可用。有关更多信息,请参阅许可证文件。