From 01f86d8c1b8c2668e27b6c2a9b02da11e01d04e2 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 23 Nov 2019 11:20:36 -0600 Subject: [PATCH] Vertically center small fonts and favicons when we hit the row minimum. Issue #1329 --- iOS/MasterFeed/Cell/MasterFeedTableViewCellLayout.swift | 8 +++++++- .../Cell/MasterFeedTableViewSectionHeaderLayout.swift | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/iOS/MasterFeed/Cell/MasterFeedTableViewCellLayout.swift b/iOS/MasterFeed/Cell/MasterFeedTableViewCellLayout.swift index 3ba4d5239..4ff894978 100644 --- a/iOS/MasterFeed/Cell/MasterFeedTableViewCellLayout.swift +++ b/iOS/MasterFeed/Cell/MasterFeedTableViewCellLayout.swift @@ -98,7 +98,7 @@ struct MasterFeedTableViewCellLayout { } } - let rLabel = CGRect(x: rLabelx, y: rLabely, width: labelWidth, height: labelSizeInfo.size.height) + var rLabel = CGRect(x: rLabelx, y: rLabely, width: labelWidth, height: labelSizeInfo.size.height) // Determine cell height let paddedLabelHeight = rLabel.maxY + UIFontMetrics.default.scaledValue(for: MasterFeedTableViewCellLayout.verticalPadding) @@ -117,6 +117,12 @@ struct MasterFeedTableViewCellLayout { rDisclosure = MasterFeedTableViewCellLayout.centerVertically(rDisclosure, newBounds) } + // Small fonts and the Favicon need centered if we hit the minimum row height + if cellHeight == MasterFeedTableViewCellLayout.minRowHeight { + rLabel = MasterFeedTableViewCellLayout.centerVertically(rLabel, newBounds) + rFavicon = MasterFeedTableViewCellLayout.centerVertically(rFavicon, newBounds) + } + // Separator Insets let separatorInset = MasterFeedTableViewCellLayout.disclosureButtonSize.width separatorRect = CGRect(x: separatorInset, y: cellHeight - 0.5, width: cellWidth - separatorInset, height: 0.5) diff --git a/iOS/MasterFeed/Cell/MasterFeedTableViewSectionHeaderLayout.swift b/iOS/MasterFeed/Cell/MasterFeedTableViewSectionHeaderLayout.swift index 5b487f837..1421e16f0 100644 --- a/iOS/MasterFeed/Cell/MasterFeedTableViewSectionHeaderLayout.swift +++ b/iOS/MasterFeed/Cell/MasterFeedTableViewSectionHeaderLayout.swift @@ -57,7 +57,7 @@ struct MasterFeedTableViewSectionHeaderLayout { labelWidth = cellWidth - (rLabelx + MasterFeedTableViewSectionHeaderLayout.labelMarginRight + maxUnreadCountSize.width + MasterFeedTableViewSectionHeaderLayout.unreadCountMarginRight) let labelSizeInfo = MultilineUILabelSizer.size(for: label.text ?? "", font: label.font, numberOfLines: 0, width: Int(floor(labelWidth))) - let rLabel = CGRect(x: rLabelx, y: rLabely, width: labelWidth, height: labelSizeInfo.size.height) + var rLabel = CGRect(x: rLabelx, y: rLabely, width: labelWidth, height: labelSizeInfo.size.height) // Determine cell height let paddedLabelHeight = rLabel.maxY + UIFontMetrics.default.scaledValue(for: MasterFeedTableViewSectionHeaderLayout.verticalPadding) @@ -74,6 +74,11 @@ struct MasterFeedTableViewSectionHeaderLayout { } rDisclosure = MasterFeedTableViewCellLayout.centerVertically(rDisclosure, newBounds) + // Small fonts need centered if we hit the minimum row height + if cellHeight == MasterFeedTableViewSectionHeaderLayout.minRowHeight { + rLabel = MasterFeedTableViewCellLayout.centerVertically(rLabel, newBounds) + } + // Assign the properties self.height = cellHeight self.unreadCountRect = rUnread