@@ -11,6 +11,8 @@ import UIKit
11
11
class InteractivityFirstViewController : UIViewController {
12
12
lazy var interactivitySecondViewController : InteractivitySecondViewController = InteractivitySecondViewController ( )
13
13
lazy var customTransitionDelegate : InteractivityTransitionDelegate = InteractivityTransitionDelegate ( )
14
+ lazy var interactiveTransitionRecognizer : UIScreenEdgePanGestureRecognizer = UIScreenEdgePanGestureRecognizer . init ( target: self , action: Selector ( " interactiveTransitionRecognizerAction: " ) )
15
+
14
16
override func viewDidLoad( ) {
15
17
super. viewDidLoad ( )
16
18
view. backgroundColor = [ 224 , 222 , 255 ] . color // 设置背景颜色
@@ -32,19 +34,12 @@ class InteractivityFirstViewController: UIViewController {
32
34
button. frame. origin. y = view. frame. maxY - 100
33
35
button. setTitleColor ( UIColor . blueColor ( ) , forState: . Normal)
34
36
button. setTitle ( " 演示动画 " , forState: . Normal)
35
- button. addTarget ( self , action: Selector ( " animationButtonDidClicked " ) , forControlEvents: . TouchUpInside)
37
+ button. addTarget ( self , action: Selector ( " animationButtonDidClicked: " ) , forControlEvents: . TouchUpInside)
36
38
view. addSubview ( button)
37
39
38
40
/// 添加滑动交互手势
39
- let interactiveTransitionRecognizer = UIScreenEdgePanGestureRecognizer . init ( target: self , action: Selector ( " interactiveTransitionRecognizerAction: " ) )
40
41
interactiveTransitionRecognizer. edges = . Right;
41
42
self . view. addGestureRecognizer ( interactiveTransitionRecognizer)
42
-
43
- /// 设置动画代理
44
- customTransitionDelegate. gestureRecognizer = interactiveTransitionRecognizer
45
- interactivitySecondViewController. transitioningDelegate = customTransitionDelegate
46
- interactivitySecondViewController. modalPresentationStyle = . FullScreen
47
-
48
43
}
49
44
50
45
override func didReceiveMemoryWarning( ) {
@@ -56,14 +51,25 @@ class InteractivityFirstViewController: UIViewController {
56
51
extension InteractivityFirstViewController {
57
52
func interactiveTransitionRecognizerAction( sender: UIScreenEdgePanGestureRecognizer ) {
58
53
if sender. state == . Began {
59
-
54
+ customTransitionDelegate. gestureRecognizer = interactiveTransitionRecognizer
55
+ self . animationButtonDidClicked ( sender)
60
56
}
61
57
}
62
58
}
63
59
64
60
extension InteractivityFirstViewController {
65
- func animationButtonDidClicked( ) {
61
+ func animationButtonDidClicked( sender: AnyObject ) {
62
+ /// 设置动画代理
63
+ if sender. isKindOfClass ( UIGestureRecognizer) {
64
+ customTransitionDelegate. gestureRecognizer = interactiveTransitionRecognizer
65
+ }
66
+ else {
67
+ customTransitionDelegate. gestureRecognizer = nil
68
+ }
66
69
customTransitionDelegate. targetEdge = . Right
70
+ interactivitySecondViewController. transitioningDelegate = customTransitionDelegate
71
+ interactivitySecondViewController. modalPresentationStyle = . FullScreen
72
+
67
73
self . presentViewController ( interactivitySecondViewController, animated: true , completion: nil )
68
74
}
69
75
0 commit comments