PBRevealViewController 1.3.5

PBRevealViewController 1.3.5

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最新发布2020年12月

iDevelopper 维护。



  • iDevelopper

PBRevealViewController

Version License Platform

PBRevealViewController 是一个-slide UIViewController 子类,用于在 iOS 和 tvOS 上展开主视图控制器上方的侧(左和/或右)视图控制器,灵感来自 SWRevealViewController 子类。

PBRevealViewController 兼容 iOS 和 tvOS,目前支持 Swift 5.0、Swift 4.2(swift-4.2 分支)和 Objective-C!

示例

Image Image Image Image

安装

要运行示例项目,请克隆仓库,然后在示例目录中从终端首先运行 pod install

您也可以从任何地方在终端中运行 pod try PBRevealViewController

Swift 包管理器

PBRevealViewController支持SPM版本5.1.0及以上。要使用SPM,您应该使用Xcode 11或更高版本打开您的项目。点击文件 -> Swift包 -> 添加包依赖项,输入https://github.com/iDevelopper/PBRevealViewController。选择您要使用的版本。

手册

安装它的最简单方法是将其以下内容复制到您的项目

  • PBRevealViewController.h
  • PBRevealViewController.m

或者

  • PBRevealViewController.swift

CocoaPods

PBRevealViewController也可以通过CocoaPods获得。

要将库安装到您的项目中

PBRevealViewController为Objective-C和Swift都提供了子规格!目前,Objective-C是默认子规格。

这意味着要在一个Objective-C项目中使用PBRevealViewController,请将以下内容添加到您的项目Podfile中

pod 'PBRevealViewController'

但如果您正在使用Swift,请添加以下内容以指定Swift子规格

pod 'PBRevealViewController/Swift'

特性

  • 使用视图控制器包含实现的Reveal视图控制器。
  • 在UIViewController上有一个revealViewController类别方法,可以获取任何子控制器的父PBRevealViewController,类似于UIViewController的navigationController属性。
  • 支持任何左/右/主视图控制器的组合。
  • 处理旋转。
  • 可以作为其他控制器的子视图控制器嵌入,或作为根视图控制器部署。
  • 与任何子视图控制器或父控制器协同工作得很好。
  • 可以作为其自身的子级来部署,以创建类似级联的分层界面。
  • 无缝集成点击和拖动手势识别器。
  • 如需,为左/右视图提供模糊效果。
  • 提供代理方法以获取控制器的完整状态,并为您自己的代码钩子实现自定义行为。
  • 提供代理方法以在推送时请求主视图控制器的动画/完成块。
  • 提供代理方法以在推送时请求子控制器的块。
  • 提供代理方法以在推送时请求采用UIViewControllerAnimatedTransitioning协议的动画控制器,用于自定义动画转换(推送或设置)。

需求

  • iOS 6.0 或更高版本。
  • tvOS 9.0 或更高版本。
  • ARC 内存管理。

使用方法

  • 通过传递“left”(可选)、“main”(必需)和“right”(可选)视图控制器来初始化 PBRevealViewController 实例。
  • 像使用任何视图控制器一样,在您的代码中使用 PBRevealViewController 实例。
  • 将其作为应用程序窗口的根视图控制器部署,或将它作为其他容器控制器的子视图控制器。
  • 您可以保留 PBRevealViewController 提供的 panGestureRecognized 和 tapGestureRecognizer(按默认行为)或者将她添加到“main”视图控制器上的合适视图。例如,在您的“main”视图控制器的 viewDidLoad 方法中,将 panGestureRecognizer 添加到导航栏。
  • 取消 PBRevealViewController 提供的手势识别器行为的设置。
- (BOOL)revealControllerTapGestureShouldBegin:
- (BOOL)revealControllerPanGestureShouldBegin:direction:

示例:只有当用户在屏幕边缘开始滑动时,才允许打开左/右视图。

新特性:查看 panFromLeftBorderWidth 和 panFromRightBorderWidth 属性!

Objective-C

- (BOOL)revealControllerPanGestureShouldBegin:(PBRevealViewController *)revealController direction:(PBRevealControllerPanDirection)direction
{
	CGPoint point = [revealController.panGestureRecognizer locationInView:self.view];
	if (!revealController.isLeftViewOpen && direction == PBRevealControllerPanDirectionRight && point.x < 50.0) {
		return YES;
	}
	if (!revealController.isRightViewOpen && direction == PBRevealControllerPanDirectionLeft && point.x > (self.view.bounds.size.width - 50)) {
		return YES;
	}
	if (revealController.isLeftViewOpen || revealController.isRightViewOpen) {
		return YES;
	}
	return NO;
}

Swift 3

    func revealControllerPanGestureShouldBegin(_ revealController: PBRevealViewController!, direction: PBRevealControllerPanDirection) -> Bool {
        let point = revealController.panGestureRecognizer.location(in: view)
        if !revealController.isLeftViewOpen && direction == .right && point.x < 50.0 {
            return true
        }
        if !revealController.isRightViewOpen && direction == .left && point.x > (view.bounds.size.width - 50) {
            return true
        }
        if revealController.isLeftViewOpen || revealController.isRightViewOpen {
            return true
        }
        return false
    }
  • 在任何时候,您都可以通过编程或基于用户动作,程序化地显示、隐藏“left”或“right”视图,或替换任意的视图控制器,是否启用动画皆可。

基本 API 描述

  • 程序化初始化 PBRevealViewController
- (id)initWithLeftViewController:(UIViewController *)leftViewController mainViewController:(UIViewController *)mainViewController rightViewController:(UIViewController *)rightViewController;
  • 使用 Storyboard 初始化 PBRevealViewController

Image

  • 推送主视图控制器
- (void)pushMainViewController:(UIViewController *)mainViewController animated:(BOOL)animated;
  • 替换视图控制器
- (void)setLeftViewController:(UIViewController *)leftViewController animated:(BOOL)animated;
- (void)setMainViewController:(UIViewController *)mainViewController animated:(BOOL)animated;
- (void)setRightViewController:(UIViewController *)rightViewController animated:(BOOL)animated;
  • 其他方法在 PBRevealViewController.h 头文件和 CocoaPods 中有文档说明。

特别说明

特别感谢 Joan Lluch

这段代码受到了她的优秀且类似的类 SWRevealViewController 的启发。

作者

iDevelopper,[email protected]

许可证

PBRevealViewController遵循MIT许可证。有关更多信息,请参阅LICENSE文件。

请告知我您何时在项目中使用这个控制器!

Patrick Bodet,又名iDevelopper