From 74a231242ee3487fd477079630a18feae0a4b7ac Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Wed, 14 Feb 2024 17:16:44 -0600 Subject: [PATCH] Displays version # for updates in My Apps tab --- AltStore/My Apps/MyAppsViewController.swift | 18 ++++--- .../My Apps/UpdateCollectionViewCell.swift | 13 ++++- AltStore/My Apps/UpdateCollectionViewCell.xib | 48 +++++-------------- 3 files changed, 31 insertions(+), 48 deletions(-) diff --git a/AltStore/My Apps/MyAppsViewController.swift b/AltStore/My Apps/MyAppsViewController.swift index 3b9442fc..666c9721 100644 --- a/AltStore/My Apps/MyAppsViewController.swift +++ b/AltStore/My Apps/MyAppsViewController.swift @@ -239,10 +239,8 @@ private extension MyAppsViewController cell.bannerView.button.isIndicatingActivity = false cell.bannerView.configure(for: app, action: .update) - - let versionDate = Date().relativeDateString(since: latestSupportedVersion.date) - cell.bannerView.subtitleLabel.text = versionDate - + cell.bannerView.subtitleLabel.text = String(format: NSLocalizedString("Version %@", comment: ""), latestSupportedVersion.localizedVersion) + let appName: String if app.isBeta @@ -254,6 +252,7 @@ private extension MyAppsViewController appName = app.name } + let versionDate = Date().relativeDateString(since: latestSupportedVersion.date) cell.bannerView.accessibilityLabel = String(format: NSLocalizedString("%@ %@ update. Released on %@.", comment: ""), appName, latestSupportedVersion.localizedVersion, versionDate) cell.bannerView.button.addTarget(self, action: #selector(MyAppsViewController.updateApp(_:)), for: .primaryActionTriggered) @@ -1981,17 +1980,16 @@ extension MyAppsViewController: UICollectionViewDelegateFlowLayout // Manually change cell's width to prevent conflicting with UIView-Encapsulated-Layout-Width constraints. self.prototypeUpdateCell.frame.size.width = collectionView.bounds.width - - let widthConstraint = self.prototypeUpdateCell.contentView.widthAnchor.constraint(equalToConstant: collectionView.bounds.width) - NSLayoutConstraint.activate([widthConstraint]) - defer { NSLayoutConstraint.deactivate([widthConstraint]) } self.dataSource.cellConfigurationHandler(self.prototypeUpdateCell, item, indexPath) - let size = self.prototypeUpdateCell.contentView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize) + let size = self.prototypeUpdateCell.systemLayoutSizeFitting(CGSize(width: collectionView.frame.width, height: UIView.layoutFittingCompressedSize.height), + withHorizontalFittingPriority: .required, // Width is fixed + verticalFittingPriority: .fittingSizeLevel) // Height can be as large as needed + self.cachedUpdateSizes[item.bundleIdentifier] = size return size - + case .activeApps, .inactiveApps: return CGSize(width: collectionView.bounds.width, height: 88) } diff --git a/AltStore/My Apps/UpdateCollectionViewCell.swift b/AltStore/My Apps/UpdateCollectionViewCell.swift index 72ae798a..7e72ca32 100644 --- a/AltStore/My Apps/UpdateCollectionViewCell.swift +++ b/AltStore/My Apps/UpdateCollectionViewCell.swift @@ -26,7 +26,6 @@ extension UpdateCollectionViewCell } @IBOutlet var bannerView: AppBannerView! - @IBOutlet var versionDescriptionTitleLabel: UILabel! @IBOutlet var versionDescriptionTextView: CollapsingTextView! @IBOutlet private var blurView: UIVisualEffectView! @@ -85,6 +84,17 @@ extension UpdateCollectionViewCell return view } } + + override func systemLayoutSizeFitting(_ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority) -> CGSize + { + // Ensure cell is laid out so it will report correct size. + self.versionDescriptionTextView.setNeedsLayout() + self.versionDescriptionTextView.layoutIfNeeded() + + let size = super.systemLayoutSizeFitting(targetSize, withHorizontalFittingPriority: horizontalFittingPriority, verticalFittingPriority: verticalFittingPriority) + + return size + } } private extension UpdateCollectionViewCell @@ -97,7 +107,6 @@ private extension UpdateCollectionViewCell case .expanded: self.versionDescriptionTextView.isCollapsed = false } - self.versionDescriptionTitleLabel.textColor = self.originalTintColor ?? self.tintColor self.blurView.backgroundColor = self.originalTintColor ?? self.tintColor self.bannerView.button.progressTintColor = self.originalTintColor ?? self.tintColor diff --git a/AltStore/My Apps/UpdateCollectionViewCell.xib b/AltStore/My Apps/UpdateCollectionViewCell.xib index 73a2f158..2330ed32 100644 --- a/AltStore/My Apps/UpdateCollectionViewCell.xib +++ b/AltStore/My Apps/UpdateCollectionViewCell.xib @@ -1,10 +1,11 @@ - + - + + @@ -30,44 +31,17 @@ - + - - + + - - - - - - - - - - - - - - - - - - - - - + + @@ -108,14 +82,16 @@ - - + + + +