Skip to content

Commit 557632a

Browse files
committed
Remove extra backgroundFillView for the pop animation as can use the AlbumsViewController.view directly
1 parent 7f437a7 commit 557632a

File tree

2 files changed

+11
-30
lines changed

2 files changed

+11
-30
lines changed

custom-transitions/Transitions/TransitionManager.swift

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ final class TransitionManager: NSObject, UIViewControllerAnimatedTransitioning {
1111

1212
private let duration: TimeInterval
1313
private var operation = UINavigationController.Operation.push
14-
private var popSnapshots = [UIViewController: UIView]()
1514

1615
init(duration: TimeInterval) {
1716
self.duration = duration
@@ -64,8 +63,6 @@ private extension TransitionManager {
6463
let detailsViewController = toViewController as? AlbumDetailViewController
6564
else { return }
6665

67-
popSnapshots[albumsViewController] = fromViewController.view.snapshotView(afterScreenUpdates: false)
68-
6966
presentViewController(detailsViewController, from: albumsViewController, with: context)
7067

7168
case .pop:
@@ -140,17 +137,6 @@ private extension TransitionManager {
140137

141138
let containerView = context.containerView
142139

143-
let backgroundFillView: UIView
144-
if let snapshot = popSnapshots[toViewController] {
145-
backgroundFillView = snapshot
146-
backgroundFillView.frame = fromViewController.view.frame
147-
popSnapshots[toViewController] = nil
148-
} else {
149-
backgroundFillView = UIView()
150-
backgroundFillView.frame = fromViewController.view.frame
151-
AlbumsViewController.setupBackgroundColor(for: backgroundFillView)
152-
}
153-
154140
let snapshotContentView = UIView()
155141
snapshotContentView.backgroundColor = albumDetailRootView.backgroundColor
156142
snapshotContentView.frame = albumDetailRootView.frame
@@ -163,13 +149,10 @@ private extension TransitionManager {
163149
snapshotAlbumCoverImageView.layer.cornerRadius = albumDetailHeaderView.layer.cornerRadius
164150
snapshotAlbumCoverImageView.frame = containerView.convert(albumDetailHeaderView.albumCoverImageView.frame, from: albumDetailHeaderView)
165151

166-
containerView.addSubview(backgroundFillView)
167152
containerView.addSubview(toViewController.view)
168153
containerView.addSubview(snapshotContentView)
169154
containerView.addSubview(snapshotAlbumCoverImageView)
170155

171-
toViewController.view.isHidden = true
172-
173156
let animator = UIViewPropertyAnimator(duration: duration, curve: .easeInOut) {
174157
snapshotContentView.frame = containerView.convert(albumCell.contentView.frame, from: albumCell)
175158
snapshotContentView.backgroundColor = albumCell.contentView.backgroundColor
@@ -178,8 +161,6 @@ private extension TransitionManager {
178161
}
179162

180163
animator.addCompletion { position in
181-
toViewController.view.isHidden = false
182-
backgroundFillView.removeFromSuperview()
183164
snapshotAlbumCoverImageView.removeFromSuperview()
184165
snapshotContentView.removeFromSuperview()
185166
context.completeTransition(position == .end)

custom-transitions/ViewController/AlbumsViewController.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,29 +45,29 @@ class AlbumsViewController: UIViewController {
4545
override func viewDidAppear(_ animated: Bool) {
4646
super.viewDidAppear(animated)
4747
}
48-
49-
static func setupBackgroundColor(for view: UIView) {
50-
let gradient = CAGradientLayer()
51-
gradient.frame = view.bounds
52-
gradient.colors = [UIColor.backgroundColorGradient1 ?? .black, UIColor.backgroundColorGradient2 ?? .black].map { $0.cgColor }
53-
gradient.startPoint = .init(x: 0.5, y: 0)
54-
gradient.endPoint = .init(x: 0.5, y: 1)
55-
gradient.locations = [0.5]
56-
view.layer.insertSublayer(gradient, at: 0)
57-
}
5848
}
5949

6050
// MARK: - Setups
6151

6252
private extension AlbumsViewController {
6353

6454
func setupUI() {
65-
Self.setupBackgroundColor(for: view)
55+
setupBackgroundColor()
6656
setupHeaderView()
6757
setupCollectionView()
6858
setupPageControl()
6959
}
7060

61+
func setupBackgroundColor() {
62+
let gradient = CAGradientLayer()
63+
gradient.frame = view.bounds
64+
gradient.colors = [UIColor.backgroundColorGradient1 ?? .black, UIColor.backgroundColorGradient2 ?? .black].map { $0.cgColor }
65+
gradient.startPoint = .init(x: 0.5, y: 0)
66+
gradient.endPoint = .init(x: 0.5, y: 1)
67+
gradient.locations = [0.5]
68+
view.layer.insertSublayer(gradient, at: 0)
69+
}
70+
7171
func setupHeaderView() {
7272
let bandNameLabel = UILabel()
7373
bandNameLabel.font = .titleFont

0 commit comments

Comments
 (0)