GKBaseAnimatedTransition.swift
2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//
// GKBaseAnimatedTransition.swift
// GKNavigationBarSwift
//
// Created by QuintGao on 2020/3/24.
// Copyright © 2020 QuintGao. All rights reserved.
//
import UIKit
open class GKBaseAnimatedTransition: NSObject {
open var isScale = false
open var shadowView: UIView!
open var transitionContext: UIViewControllerContextTransitioning!
open var containerView: UIView!
open var fromViewController: UIViewController!
open var toViewController: UIViewController!
open var isHideTabBar = false
open class func transition(with scale: Bool) -> GKBaseAnimatedTransition {
return self.init(scale: scale)
}
required public init(scale: Bool) {
self.isScale = scale
}
}
extension GKBaseAnimatedTransition: UIViewControllerAnimatedTransitioning {
// MARK - UIViewControllerAnimatedTransitioning
open func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
return TimeInterval(UINavigationController.hideShowBarDuration)
}
open func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView
let fromVC = transitionContext.viewController(forKey: .from)
let toVC = transitionContext.viewController(forKey: .to)
self.containerView = containerView
self.fromViewController = fromVC
self.toViewController = toVC
self.transitionContext = transitionContext
animateTransition()
}
public func animationDuration() -> TimeInterval {
return self.transitionDuration(using: self.transitionContext)
}
@objc open func animateTransition() {
// SubClass Implementation
}
public func completeTransition() {
guard let transitionContext = self.transitionContext else { return }
transitionContext .completeTransition(!transitionContext.transitionWasCancelled)
}
}
extension UIViewController {
fileprivate struct AssociatedKeys {
static var defCaptureImage: Void?
}
public var gk_captureImage: UIImage? {
get {
guard let obj = gk_getAssociatedObject(self, &AssociatedKeys.defCaptureImage) else { return nil }
return obj as? UIImage
}
set {
gk_setAssociatedObject(self, &AssociatedKeys.defCaptureImage, newValue)
}
}
}