测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布日期最后发布 | 2014年12月 |
由Luis Recuenco维护。
基于滚动的侧边栏控制器
侧边栏控制器无疑是 iOS 中实现最多的 UX 模式之一。由于 Facebook 和 Path 的实现而变得非常流行。如今,这些控件太多了,我认为太多了。它们已经取代了许多基于标签栏的应用程序,但遗憾的是,它们都存在同一个问题,即它们在物理上的错误。是的,有些看起来很酷,基于 iOS 7 的动力效果(https://github.com/monospacecollective/MSDynamicsDrawerViewController/),但仍然,它们没有像我所期望的这类控件那样工作。当你拖拽并释放面板时,你会感觉它们突然停止,突然,面板没有像应该那样流动和滑动。模仿物理效应,像大多数库试图做的那样,是非常、非常困难的,你无法完美地做到这一点,你在以一定速度释放手指时,会感觉到速度的变化或者是突然的尖利性和突然性。
那么?解决方案是什么?实际上非常简单:使用滚动视图。就这么简单。我们都知道滚动视图的物理效应...为何不只为这个目的使用它呢?结果是,一个使用起来非常愉快的侧边栏控制器...将其安装到您的设备上并使用它,您会发现差异。
这个库是每个人喜爱 iShows 的原因之一。
使用 CocoaPods
将 LRScrollingSidebarController 添加到您的 Podfile
platform :ios, "6.0"
pod 'LRScrollingSidebarController'
运行以下命令
pod install
手动
克隆项目或将它作为一个子模块添加。将整个 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。
如果你想要为这个项目做出贡献,请按照以下步骤操作
LRScrollingSidebarController在MIT许可下可用。有关更多信息,请参阅LICENSE文件。