Make attributed titles work on iOS

This commit is contained in:
Nate Weaver 2020-04-30 11:53:10 -05:00
parent cce4b56ee5
commit 070981553d
2 changed files with 17 additions and 1 deletions

View File

@ -12,6 +12,7 @@ import Articles
struct MasterTimelineCellData {
let title: String
let attributedTitle: NSAttributedString
let summary: String
let dateString: String
let feedName: String
@ -28,6 +29,7 @@ struct MasterTimelineCellData {
init(article: Article, showFeedName: ShowFeedName, feedName: String?, byline: String?, iconImage: IconImage?, showIcon: Bool, featuredImage: UIImage?, numberOfLines: Int, iconSize: IconSize) {
self.title = ArticleStringFormatter.truncatedTitle(article)
self.attributedTitle = ArticleStringFormatter.attributedTruncatedTitle(article)
self.summary = ArticleStringFormatter.truncatedSummary(article)
self.dateString = ArticleStringFormatter.dateString(article.logicalDatePublished)
@ -60,6 +62,7 @@ struct MasterTimelineCellData {
init() { //Empty
self.title = ""
self.attributedTitle = NSAttributedString()
self.summary = ""
self.dateString = ""
self.feedName = ""

View File

@ -148,7 +148,7 @@ private extension MasterTimelineTableViewCell {
func updateTitleView() {
titleView.font = MasterTimelineDefaultCellLayout.titleFont
titleView.textColor = labelColor
updateTextFieldText(titleView, cellData?.title)
updateTextFieldAttributedText(titleView, cellData?.attributedTitle)
}
func updateSummaryView() {
@ -170,6 +170,19 @@ private extension MasterTimelineTableViewCell {
setNeedsLayout()
}
}
func updateTextFieldAttributedText(_ label: UILabel, _ text: NSAttributedString?) {
var s = text ?? NSAttributedString(string: "")
if let fieldFont = label.font, let color = label.textColor {
s = s.adding(font: fieldFont, color: color)
}
if label.attributedText != s {
label.attributedText = s
setNeedsLayout()
}
}
func updateFeedNameView() {
switch cellData.showFeedName {