SAHistoryNavigationViewController 3.1.1

SAHistoryNavigationViewController 3.1.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新版本2017年2月
Swift支持的 Swift 版本3.0
SPM支持 SPM

Taiki Suzuki 维护。



SAHistoryNavigationViewController

支持 iOS9 的 3D Touch!!

SAHistoryNavigationViewController 在 UINavigationContoller 中实现了类似 iOS 任务管理的 UI。

ManiacDev.com 参考。
https://maniacdev.com/2015/03/open-source-component-enhancing-the-back-button-with-view-history-navigation

功能

  • [x] 类似 iOS 任务管理的 UI
  • [x] 通过长按返回吧按钮的动作启动导航历史
  • [x] 支持 Swift2.0
  • [x] 支持 3D Touch(如果设备不支持 3D Touch,则自动替换为长按手势。)
  • [x] 支持 Swift2.3
  • [x] 支持 Swift3

安装

手动

SAHistoryNavigationViewController 目录添加到您的项目中。

使用方法

如果您是从 Cocoapods 安装的,您必须写入 import SAHistoryNavigationViewController

Storyboard 或 Xib

将 UINavigationController 的自定义类设置为 SAHistoryNavigationViewController。另外,将模块设置为 SAHistoryNavigationViewController。

代码

您可以在任何 ViewController 中将 SAHistoryNavigationViewController 作为 self.sah.navigationController 使用,因为实现了以下 extension SAHistoryExtension 代码。

public protocol SAHistoryCompatible {
    associatedtype CompatibleType
    var sah: CompatibleType { get }
}

public extension SAHistoryCompatible {
    public var sah: SAHistoryExtension<Self> {
        return SAHistoryExtension(self)
    }
}

public final class SAHistoryExtension<Base> {
    public let base: Base
    public init(_ base: Base) {
        self.base = base
    }
}

extension UIViewController: SAHistoryCompatible {}

extension SAHistoryExtension where Base: UIViewController {
    public var navigationController: SAHistoryNavigationViewController? {
        return base.navigationController as? SAHistoryNavigationViewController
    }
}

并且您需要按照这种方式初始化。

let ViewController = UIViewController()
let navigationController = SAHistoryNavigationViewController()
navigationController.setViewControllers([ViewController], animated: true)
presentViewController(navigationController, animated: true, completion: nil)

如果您想在不使用长按动作的情况下启动导航历史,请使用此代码。

//In any UIViewController
self.sah.navigationController?.showHistory()

自定义

如果您想自定义导航历史的背景,您可以使用这些方法。

//In any UIViewController
self.sah.navigationController?.contentView
self.sah.navigationController?.historyBackgroundColor

这是代理方法。

@objc public protocol SAHistoryNavigationViewControllerDelegate: NSObjectProtocol {
    optional func historyControllerDidShowHistory(controller: SAHistoryNavigationViewController, viewController: UIViewController)
}

要求

  • Xcode 8.0 或更高版本
  • iOS8.0 或更高版本
  • MisterFusion

作者

铃木大和,[email protected]

许可

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