AnyPullBack 1.2.0

AnyPullBack 1.2.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最后发布2017年7月
SwiftSwift 版本3.0
SPM支持 SPM

Vhyme Riku维护。



  • 作者:
  • Vhyme Riku

AnyPullBack

一个具有像素完美的推送动画和任意方向的弹出手势的简单导航控制器!

注意:提供对 UIScrollView 的实验性支持(以及所有基于 UIScrollView 的其他视图,例如 UITableViewUIWebView),这意味着您接触到的所有 UIScrollView 都应该滚动到最左边/顶部/底部以触发右/下/上滑动手势。除了 rootViewController 中的外,所有接触到的 UIScrollView 都将设置为 bounces = false 以达到此目的。

使用 Swift 3 编写。

预览

运行 pod try AnyPullBack,更改捆绑标识符和开发团队,构建项目并在手机上运行!

查看视频

安装

pod 'AnyPullBack' 添加到您的 Podfile

用法

根据您的要求使用 AnyPullBackNavigationController

继承性注意

AnyPullBackNavigationController 类是公开的,这意味着您可以继承该类并创建自己的子类。但是,如果您的子类重写了 viewDidLoad 方法,请务必调用 super.viewDidLoad(),否则将会禁用所有功能,像纯 UINavigationController 一样工作。

APIs

  • 所有从 UINavigationController 继承的 API 都可用。

  • defaultPushAnimator

设置 pushViewController(_:animated:) 所使用的默认动画器。使用带有源矩形或源视图的 ScaleInAnimator 或使用您喜欢的方向的 SwipeInAnimator 进行初始化。

  • defaultPopAnimator

设置 popViewController:animated: 所使用的默认动画器。使用您喜欢的方向的 SwipeOutAnimator 进行初始化。

  • pullableWidthFromLeft: CGFloat

默认为 0。设置右侧滑动可以弹出当前 ViewController 的区域宽度。要使整个屏幕都可以滑动以弹出,请将其设置为 0

  • canPullFromLeft | canPullFromTop | canPullFromBottom

主控滑动手势。默认值为所有都是 true

  • iNdEx pushViewController(_:fromView:)

使用临时的 ScaleInAnimator 推送一个 ViewController,从特定的视图提供缩放动画。

注意:与 pushViewController(_:fromRect:) 相比,此方法提供了更平滑的过渡,源头视图淡出,而不是被突然出现的空白矩形覆盖。

  • iNdEx pushViewController(_:fromRect:)

使用临时的 ScaleInAnimator 推送一个 ViewController,从特定的矩形提供缩放动画。

  • mom indexPath(_:inDirection:)

在特定方向推送一个 ViewController。可用的方向有 .leftFromRight.rightFromLeft.upFromBottom.downFromTop

  • mom viewController(inDirection:)

在特定方向弹出 ViewController。可用的方向有 .rightFromLeft.leftFromRight.downFromTop.upFromBottom

  • 协议 AnyPullBackCustomizable

扩展你的 UIViewController 使用 AnyPullBackCustomizable 并指定方法 UIViewController::apb_shouldPull(inDirection:) -> Bool 来自定义是否允许当前的视图控制器从特定方向被拖动。此方法在用户尝试从某一方向拖动时被调用。

注意:此方法可以在单个滑动手势过程中多次被调用,直到它返回 true 允许滑动。请小心处理此细节。

示例

class ExampleViewController: UIViewController, AnyPullBackCustomizable {
    
    func apb_shouldPull(inDirection direction: SwipeOutDirection) -> Bool {

        // To only enable pulling from left for this view controller
        return direction == .rightFromLeft

        // To disable pull-to-back completely for this view controller
        return false
    }
}