Fixes crash when displaying new updates

This commit is contained in:
Riley Testut
2019-09-12 12:49:19 -07:00
parent f01e4ec753
commit e510e9d992
2 changed files with 16 additions and 10 deletions

View File

@@ -58,30 +58,33 @@ class CollapsingTextView: UITextView
let buttonFont = UIFont.systemFont(ofSize: font.pointSize, weight: .medium) let buttonFont = UIFont.systemFont(ofSize: font.pointSize, weight: .medium)
self.moreButton.titleLabel?.font = buttonFont self.moreButton.titleLabel?.font = buttonFont
let buttonY = (font.lineHeight + self.lineSpacing) * CGFloat(self.maximumNumberOfLines - 1)
let size = self.moreButton.sizeThatFits(CGSize(width: 1000, height: 1000)) let size = self.moreButton.sizeThatFits(CGSize(width: 1000, height: 1000))
let moreButtonFrame = CGRect(x: self.bounds.width - self.moreButton.bounds.width, let moreButtonFrame = CGRect(x: self.bounds.width - self.moreButton.bounds.width,
y: self.bounds.height - self.moreButton.bounds.height - self.lineSpacing, y: buttonY,
width: size.width, width: size.width,
height: font.lineHeight) height: font.lineHeight)
self.moreButton.frame = moreButtonFrame self.moreButton.frame = moreButtonFrame
if self.isCollapsed if self.isCollapsed
{ {
var exclusionFrame = moreButtonFrame
exclusionFrame.origin.y += self.moreButton.bounds.midY
exclusionFrame.size.width = self.bounds.width // Extra wide to make sure it wraps to next line.
self.textContainer.maximumNumberOfLines = self.maximumNumberOfLines self.textContainer.maximumNumberOfLines = self.maximumNumberOfLines
self.textContainer.exclusionPaths = [UIBezierPath(rect: exclusionFrame)]
let maximumCollapsedHeight = font.lineHeight * CGFloat(self.maximumNumberOfLines) let maximumCollapsedHeight = font.lineHeight * CGFloat(self.maximumNumberOfLines)
if self.bounds.height > maximumCollapsedHeight if self.intrinsicContentSize.height > maximumCollapsedHeight
{ {
var exclusionFrame = moreButtonFrame
exclusionFrame.origin.y += self.moreButton.bounds.midY
exclusionFrame.size.width = self.bounds.width // Extra wide to make sure it wraps to next line.
self.textContainer.exclusionPaths = [UIBezierPath(rect: exclusionFrame)]
self.moreButton.isHidden = false self.moreButton.isHidden = false
} }
else else
{ {
self.textContainer.exclusionPaths = []
self.moreButton.isHidden = true self.moreButton.isHidden = true
} }
} }

View File

@@ -333,9 +333,12 @@ private extension MyAppsViewController
UIApplication.shared.applicationIconBadgeNumber = 0 UIApplication.shared.applicationIconBadgeNumber = 0
} }
UIView.performWithoutAnimation { if self.isViewLoaded
self.collectionView.reloadSections(IndexSet(integer: Section.updates.rawValue)) {
} UIView.performWithoutAnimation {
self.collectionView.reloadSections(IndexSet(integer: Section.updates.rawValue))
}
}
} }
func refresh(_ installedApps: [InstalledApp], completionHandler: @escaping (Result<[String : Result<InstalledApp, Error>], Error>) -> Void) func refresh(_ installedApps: [InstalledApp], completionHandler: @escaping (Result<[String : Result<InstalledApp, Error>], Error>) -> Void)