如何更改 FSCalendar 上的 Header View 标题字体并添加字幕?
Posted
技术标签:
【中文标题】如何更改 FSCalendar 上的 Header View 标题字体并添加字幕?【英文标题】:How can you change the Header View title font on FSCalendar and add a Subtitle? 【发布时间】:2021-08-12 21:43:35 【问题描述】:我正在尝试将标题标题字体设置为更大的样式字体,更像是大横幅,并在其下方设置年度副标题。
extension FSCalendar
func customizeCalendar()
appearance.caseOptions = [.headerUsesUpperCase]
appearance.headerDateFormat = "MMM"
headerHeight = 100
let header = FSCalendarHeaderView()
header.largeContentTitle?.append("aldjsf")
appearance.headerTitleFont = UIFont(name: "SFProDisplay-Bold", size: 200)
appearance.headerTitleColor = COLOR_BLACK
appearance.headerTitleOffset = CGPoint(x: 0, y: 0)
appearance.headerMinimumDissolvedAlpha = 0.6
appearance.todayColor = COLOR_PRIMARY
appearance.todaySelectionColor = COLOR_BLACK
appearance.titleFont = UIFont(name: "SFProDisplay-Bold", size: 11)
appearance.titleSelectionColor = COLOR_BLACK
appearance.weekdayFont = UIFont(name: "SFProText-Semibold", size: 11)
appearance.weekdayTextColor = COLOR_GREY
appearance.eventDefaultColor = COLOR_BLACK
appearance.subtitleFont = UIFont(name: "SFProDisplay-Bold", size: 20)
appearance.selectionColor = COLOR_BLACK
即使我正在访问属性 .headerTitleFont 它什么也没做?我尝试过各种尺寸。任何帮助表示赞赏,谢谢。
【问题讨论】:
【参考方案1】:字体大小问题
您提到的字体似乎在模拟器/设备中不可用,因此它默认为字体。我使用预装的字体尝试了您的方法,并且 headerTitle
按预期进行了更改。预装列表fonts
appearance.headerTitleFont = UIFont(name: "Noteworthy Light", size: 60)
上面的字体是这样的
为 headerView 添加字幕
使用可用的 API,您似乎无法在 headerView 中设置字幕。但或者,您可以通过自定义FSCalendarHeaderCell.titleLabel.attributedText
来实现它,如下所示。请注意,下面的代码仅更改collectionView.visibleCells
的文本,因此您还必须在滚动headerView
时执行此代码
override func viewDidAppear(_ animated: Bool)
super.viewDidAppear(animated)
for cell in calendar.calendarHeaderView.collectionView.visibleCells
//create an attributedString with two lines and different font sizes
let attributedString = NSMutableAttributedString(string: "Sep\n2021\n")
let attributes0: [NSAttributedString.Key : Any] = [
.foregroundColor: UIColor.yellow,
.font: UIFont(name: "HelveticaNeue", size: 40)!
]
let attributes1: [NSAttributedString.Key : Any] = [
.foregroundColor: UIColor.systemGray2
]
attributedString.addAttributes(attributes0, range: NSRange(location: 0, length: 3))
attributedString.addAttributes(attributes1, range: NSRange(location: 4, length: 4))
//replace titleLabel attributedText with the one we created
(cell as! FSCalendarHeaderCell).titleLabel.attributedText = attributedString
这是更改FSCalendarHeaderCell.titleLabel
的attributedText
后的样子
【讨论】:
这太棒了!我最终设置了 headerHeight = 0 并从头开始制作整个东西。但这从长远来看会更好,我现在要更新这个。谢谢。以上是关于如何更改 FSCalendar 上的 Header View 标题字体并添加字幕?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xamarin.iOS 的 FSCalendar 中添加事件