Created
January 16, 2026 13:04
-
-
Save jacobsapps/a5bf7904a9d535b23cbc0c35a7f1147e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import UIKit | |
| import SwiftyGif | |
| import PerformanceShared | |
| final class FeedViewController: UIViewController { | |
| private let viewModel: FeedViewModel | |
| private let assetStore: AssetStore | |
| private let collectionView: UICollectionView | |
| private let statsToolbarView = StatsToolbarView() | |
| private let navBarGradientView = GradientView( | |
| colors: [FeedSpec.NavigationBar.gradientTop, FeedSpec.NavigationBar.gradientBottom], | |
| startPoint: CGPoint(x: 0.5, y: 0.0), | |
| endPoint: CGPoint(x: 0.5, y: 1.0) | |
| ) | |
| private var currentStatsItemID: Int? | |
| private var navBarGradientHeightConstraint: NSLayoutConstraint? | |
| // ... | |
| } | |
| extension FeedViewController: UICollectionViewDataSource { | |
| func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { | |
| guard let cell = collectionView.dequeueReusableCell( | |
| withReuseIdentifier: FeedCell.reuseIdentifier, | |
| for: indexPath | |
| ) as? FeedCell else { | |
| return UICollectionViewCell() | |
| } | |
| let item = viewModel.visibleItems[indexPath.item] | |
| cell.configure(with: item, assetStore: assetStore) | |
| cell.onStickerUpdated = { [weak self] itemID, stickerID, centerUnit, scale, rotation in | |
| self?.viewModel.updateSticker( | |
| itemID: itemID, | |
| stickerID: stickerID, | |
| centerUnit: centerUnit, | |
| scale: scale, | |
| rotation: rotation | |
| ) | |
| } | |
| cell.onStickerDeleted = { [weak self] itemID, stickerID in | |
| self?.viewModel.deleteSticker(itemID: itemID, stickerID: stickerID) | |
| } | |
| return cell | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment