Skip to content

Commit b26570f

Browse files
author
wangfei
committed
commit
1 parent 7c58323 commit b26570f

2 files changed

Lines changed: 32 additions & 17 deletions

File tree

TodayTransition/TodayTransition/DetailViewController.swift

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ class DetailViewController: UIViewController {
3939

4040
let btn = UIButton(type: .custom)
4141
btn.setBackgroundImage(UIImage(named: "btn_close"), for: .normal)
42-
btn.frame = CGRect(x: UIScreen.main.bounds.width - 50, y: 30, width: 40, height: 40)
42+
btn.frame = CGRect(x: UIScreen.main.bounds.width - 50, y: 30, width: 30, height: 30)
4343
btn.addTarget(self, action: #selector(closeAction(_:)), for: .touchUpInside)
44+
btn.tag = 99
4445
view.addSubview(btn)
4546

4647
panGesture = UIPanGestureRecognizer(target: self, action: #selector(panAction(_:)))
@@ -58,33 +59,49 @@ class DetailViewController: UIViewController {
5859
// }
5960

6061
@objc private func closeAction(_ btn: UIButton) {
61-
self.table.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
62+
6263
self.navigationController?.popViewController(animated: true)
6364
}
6465

6566
@objc func panAction(_ pan: UIPanGestureRecognizer) {
6667

6768
var scale = percentForGesture(pan)
68-
print(scale)
69+
// print(scale)
6970

7071
switch pan.state {
7172
case .possible, .began:
73+
// self.navigationController?.delegate = self.navTransition
74+
// self.navTransition.gesture = panGesture
7275
break
7376
case .changed:
7477

75-
if scale > 0.85 {
76-
self.view.transform = CGAffineTransform(scaleX: scale, y: scale)
78+
let btn = view.viewWithTag(99)
79+
80+
if scale >= 0.85 {
81+
self.table.transform = CGAffineTransform(scaleX: scale, y: scale)
82+
83+
btn?.alpha = 1 - (1 - scale) * 1 / 0.15
84+
85+
self.table.layer.masksToBounds = true
86+
self.table.layer.cornerRadius = (1 - scale) * 10 / 0.15
87+
7788
}else {
7889
scale = 0.85
7990
self.navigationController?.popViewController(animated: true)
80-
self.view.transform = CGAffineTransform.identity
91+
self.table.transform = CGAffineTransform.identity
92+
btn?.alpha = 0
93+
btn?.removeFromSuperview()
94+
8195
}
8296

8397
break
8498

8599
case .cancelled, .ended, .failed:
86100
UIView.animate(withDuration: 0.3) {
87101
self.table.transform = CGAffineTransform.identity
102+
let btn = self.view.viewWithTag(99)
103+
104+
btn?.alpha = 1
88105
}
89106
}
90107

@@ -128,7 +145,7 @@ extension DetailViewController: UITableViewDelegate, UITableViewDataSource {
128145
}
129146

130147
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
131-
self.navigationController?.popViewController(animated: true)
148+
// self.navigationController?.popViewController(animated: true)
132149
}
133150

134151
}

TodayTransition/TodayTransition/NavInteractiveTransition.swift

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,6 @@ class CustomAnimation: NSObject, UIViewControllerAnimatedTransitioning {
120120

121121
let convertFrame = cell.convert((imgView.frame), to: fromView)
122122

123-
// let tableHeaderImg = UIImageView(image: imgView.image)
124-
// tableHeaderImg.contentMode = .scaleAspectFill
125-
// imgView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: convertFrame.height)
126123
imgView.layer.cornerRadius = 0
127124
detailTable.tableHeaderView = imgView
128125

@@ -138,8 +135,6 @@ class CustomAnimation: NSObject, UIViewControllerAnimatedTransitioning {
138135

139136
}) { (complete) in
140137

141-
// self.blurEffectView.removeFromSuperview()
142-
143138
transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
144139

145140
}
@@ -175,16 +170,18 @@ class CustomAnimation: NSObject, UIViewControllerAnimatedTransitioning {
175170

176171
let convertFrame = cell.convert(CGRect(x: 20, y: 20, width: cell.frame.width - 40, height: cell.frame.height - 40), to: fromV)
177172

178-
// detailTable.transform = CGAffineTransform.identity
179-
180173
DispatchQueue.main.async {
181174
detailTable.setContentOffset(CGPoint(x: 0, y: 0), animated: false)
182175
}
183176

177+
let btn = fromV.viewWithTag(99)
178+
184179
UIView.animate(withDuration: transitionDuration(using: transitionContext), delay: 0, usingSpringWithDamping: 0.7, initialSpringVelocity: 1, options: .curveEaseInOut, animations: {
185180

186181
detailTable.frame = convertFrame
187182

183+
btn?.alpha = 0
184+
188185
}) { (complete) in
189186

190187
cell.addSubview(imgView)
@@ -240,16 +237,17 @@ class DrivePercentAnimation: UIPercentDrivenInteractiveTransition {
240237
case .began:
241238
break
242239
case .changed:
243-
// update(1 - scale)
244240

245-
if scale > 0.9 {
241+
242+
if scale >= 0.85 {
243+
update(1 - scale)
246244
pan.view?.transform = CGAffineTransform(scaleX: scale, y: scale)
247245
}else {
248246
finish()
249247
}
250248

251249
case .ended:
252-
if scale < 0.9 {
250+
if scale < 0.85 {
253251
finish()
254252
}else {
255253
UIView.animate(withDuration: 0.3) {

0 commit comments

Comments
 (0)