ZKDrawerController 0.6.1

ZKDrawerController 0.6.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2020年6月
SPM支持 SPM

superk维护。



  • 赵振凯

ZKDrawerController

Swift5 Version License Platform

Swift 中的 iOS 浏览器控制器

需求

  • Xcode 10.2+
  • Swift 5.0+
  • iOS 部署目标 10.0+

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它:

$ gem install cocoapods

要使用 CocoaPods 在 Xcode 项目中集成 ZKDrawerController,请在您的 Podfile 中指定它:

source 'https://github.com/superk589/ZKDrawerController.git'
platform :ios, '8.0'
use_frameworks!

target 'YourApp' do
    pod 'ZKDrawerController'
end

然后,运行以下命令:

$ pod install

Carthage

Carthage 是一个去中心化的依赖管理器,它可以编译您的依赖并为您提供二进制框架。

您可以使用以下命令通过 Homebrew 安装 Carthage

$ brew update
$ brew install carthage

要使用 Carthage 将 ZKDrawerController 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "superk589/ZKDrawerController"

运行 carthage update 命令以构建框架,并将构建的 ZKDrawerController.framework 拖入您的 Xcode 项目中。

Swift Package Manager

将ZKDrawerController声明为包依赖。

.package(
    name: "ZKDrawerController", 
    url: "https://github.com/superk589/ZKDrawerController", 
    .upToNextMinor(from: "0.6.1")),

手动

如果您不希望使用上述任何依赖关系管理器,您可以手动将ZKDrawerController集成到您的项目中。

使用

初始化

let centerController = UIViewController()
let leftController = UIViewController()
let rightController = UIViewController()

let drawerController = ZKDrawerController(center: centerController, right: rightController)
let drawerController = ZKDrawerController(center: centerController, left: leftController)
let drawerController = ZKDrawerController(center: centerController, right: rightController, left: leftController)

// have none of the two sides, and then add dynamically
let drawerController = ZKDrawerController(center: centerController)
drawerController.rightViewController = UIViewController()

设置抽屉样式

// side controller covers the main controller, shadows the edge of side controllers' view
drawerController.drawerStyle = .cover

// side controller inserts below the main controller, shadows the edge of main controller's view
drawerController.drawerStyle = .insert

// side controller lays beside the main controller
drawerController.drawerStyle = .plain

手动显示或隐藏侧边控制器

drawerController.show(.right, animated: true)
drawerController.show(.left, animated: true)
drawerController.hide(animated: true)

设置主控制器缩放

// scale should be 0 to 1
drawerController.mainScale = 0.8

设置背景颜色或图像

// set background color
drawerController.containerView.backgroundColor = UIColor.white

// set background image
drawerController.backgroundImageView.image = image

设置在显示侧视图时中心控制器的视图前景色

// this view will change it's alpha while side view is showing from 0 to 1
drawerController.mainCoverView.backgroundColor = UIColor.black.withAlphaComponent(0.5)

设置左右边距宽度

drawerController.defaultRightWidth = 300
drawerController.defaultLeftWidth = 300

设置阴影宽度

drawerController.shadowWidth = 5

在主控制器中设置手势识别器宽度

drawerController.gestureRecognizerWidth = 40

需要导航回退手势失败

默认值为 true(如果设置为 false,则显示左侧抽屉手势优先级更高)

drawerController.shouldRequireFailureOfNavigationPopGesture = true

设置手势优先级

优先级较高的手势会在抽屉控制器的手势之前处理,而优先级较低的手势会在抽屉控制器手势失败后处理。

drawerController.higherPriorityGestures = [gesture1, gesture2]
drawerController.lowerPriorityGestures = [gesture3, gesture4]

动态设置侧边或主控制器

// set or replace
drawerController.centerViewController = newViewController
drawerController.rightViewController = newViewController
drawerController.leftViewController = newViewController
// remove the side view controller, mainVC can not be removed
drawerController.rightViewController = nil
drawerController.leftViewController = nil

使用ZKDrawerController作为您的根控制器并显示基于各种主控制器的侧控制器。

// in AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let home = ViewController()
    let nav = UINavigationController(rootViewController: home)
    let drawer = ZKDrawerController(center: nav, right: nil, left: nil)
    // do some setup
    drawer.mainScale = 0.8
    drawer.drawerStyle = .cover
    // ...
    window = UIWindow(frame: UIScreen.main.bounds)
    window?.rootViewController = drawer
    window?.makeKeyAndVisible()
    home.drawerController = drawer
    return true
}

// in ViewController.swift
var drawerController: ZKDrawerController!
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    let vc = UIViewController()
    drawerController.rightViewController = vc
}
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    drawerController.rightViewController = nil   
}