LRScrollingSidebarController 0.1

LRScrollingSidebarController 0.1

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

Luis Recuenco维护。



  • Luis Recuenco

基于滚动的侧边栏控制器

当前实现的问题

侧边栏控制器无疑是 iOS 中实现最多的 UX 模式之一。由于 Facebook 和 Path 的实现而变得非常流行。如今,这些控件太多了,我认为太多了。它们已经取代了许多基于标签栏的应用程序,但遗憾的是,它们都存在同一个问题,即它们在物理上的错误。是的,有些看起来很酷,基于 iOS 7 的动力效果(https://github.com/monospacecollective/MSDynamicsDrawerViewController/),但仍然,它们没有像我所期望的这类控件那样工作。当你拖拽并释放面板时,你会感觉它们突然停止,突然,面板没有像应该那样流动和滑动。模仿物理效应,像大多数库试图做的那样,是非常、非常困难的,你无法完美地做到这一点,你在以一定速度释放手指时,会感觉到速度的变化或者是突然的尖利性和突然性。

那么?解决方案是什么?实际上非常简单:使用滚动视图。就这么简单。我们都知道滚动视图的物理效应...为何不只为这个目的使用它呢?结果是,一个使用起来非常愉快的侧边栏控制器...将其安装到您的设备上并使用它,您会发现差异。

这个库是每个人喜爱 iShows 的原因之一。

安装

  1. 使用 CocoaPods

    将 LRScrollingSidebarController 添加到您的 Podfile

    platform :ios, "6.0"
    pod 'LRScrollingSidebarController'
    

    运行以下命令

    pod install
    
  2. 手动

    克隆项目或将它作为一个子模块添加。将整个 LRScrollingSidebarController 文件夹拖拽到您的项目上。

用法

为了实例化容器控制器,只需提供三个子控制器和一个间隙。

- (instancetype)initWithLeftViewController:(ISSidePanelController)leftViewController
                        mainViewController:(ISSidePanelController)mainViewController
                       rightViewController:(ISSidePanelController)rightViewController
                     mainViewControllerGap:(CGFloat)mainViewControllerGap;

然后,您只需将结果分配为您的窗口根视图控制器。这样就可以开始了。

LRScrollingSidebarController 还有一些您可以使用的一些很酷的特性。

自定义动画时间。

@property (nonatomic) NSTimeInterval animationTime;

指定一个反弹动画位移。

@property (nonatomic) CGFloat animationBounce;

当然,您可以禁用反弹动画,以及侧面板中的默认视差效果。

@property (nonatomic) BOOL allowBouncing;
@property (nonatomic) BOOL allowParallax;

默认情况下,主面板上方有一个覆盖层。您可以自定义其不透明度和颜色。

@property (nonatomic, strong) UIColor *mainViewControllerOverlayColor;
@property (nonatomic) CGFloat mainViewControllerOverlayMaxAlpha;

一旦您将容器控制器配置好与三个子控制器,您就可以使用以下方法显示它们

- (void)showLeftViewControllerAnimated:(BOOL)animated;
- (void)showMainViewControllerAnimated:(BOOL)animated;
- (void)showRightViewControllerAnimated:(BOOL)animated;

您也可以在任意时刻替换任意的子控制器

- (void)replaceLeftViewController:(ISSidePanelController)leftViewController;
- (void)replaceMainViewController:(ISSidePanelController)mainViewController;
- (void)replaceRightViewController:(ISSidePanelController)rightViewController;

- (void)showLeftViewController:(ISSidePanelController)leftViewController
                      animated:(BOOL)animated;

- (void)showMainViewController:(ISSidePanelController)mainViewController
                      animated:(BOOL)animated;

- (void)showRightViewController:(ISSidePanelController)rightViewController
                       animated:(BOOL)animated;

获取可视控制器。

- (UIViewController *)visibleController;

类“UIViewController+LRScrollingSidebarController”的目标是让每个视图控制器都拥有一个scrollingSidebarController属性(与每个视图控制器都拥有的navigationController、tabBarController或splitViewController属性相同)。如果一个视图控制器嵌入到滚动侧边栏控制器中,它将有一个指向容器的弱引用属性;否则,这个属性将是nil。这样,你就可以在子控制器中,直接与侧边栏控制器交互。

[self.scrollingSidebarController showMainViewControllerAnimated:YES];

要求

LRScrollingSidebarController需要iOS 6.0及以上版本以及ARC。

你还可以在非ARC项目中使用LRScrollingSidebarController。只需在每個源文件中设置-fobjc-arc编译器标志。

联系方式

LRScrollingSidebarController由Luis Recuenco创作:@luisrecuenco

贡献

如果你想要为这个项目做出贡献,请按照以下步骤操作

  1. fork仓库。
  2. 将你的fork克隆到本地机器。
  3. 创建带有适当测试的feature分支。
  4. 提交你的更改,将其推送到你的fork,并提交一个pull request。

许可

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