使用选择日期快速更新 FSCalendar 标头值
Posted
技术标签:
【中文标题】使用选择日期快速更新 FSCalendar 标头值【英文标题】:Update FSCalendar Header value with select date swift 【发布时间】:2021-09-14 13:58:16 【问题描述】:我已将 FSCalendar 范围模式设置为周。在该标题日期格式之后,我设置了calendar.appearance.headerDateFormat = "dd MMMM yyyy EEEE"
它显示正确的格式。
添加了代码和图片。
func setupFSCalendar()
ViewCalendar.frame = CGRect(x: 0, y: 78, width: view.frame.width, height: 100)
ViewCalendar.backgroundColor = ("#455a64").toColor()
let calendar = FSCalendar(frame: CGRect(x: 0, y: 0, width: ViewCalendar.frame.width, height: 250))
calendar.layoutIfNeeded()
calendar.dataSource = self
calendar.delegate = self
calendar.appearance.weekdayTextColor = .white // week name color
calendar.appearance.headerDateFormat = "dd MMMM yyyy EEEE"
calendar.appearance.headerTitleColor = UIColor.white
calendar.appearance.headerTitleFont = UIFont.systemFont(ofSize: 12)
calendar.appearance.titleWeekendColor = UIColor.white
calendar.appearance.titleDefaultColor = .white
calendar.scrollDirection = .horizontal
calendar.appearance.weekdayFont = UIFont.systemFont(ofSize: 12)
calendar.appearance.titleFont = UIFont.systemFont(ofSize: 18)
calendar.appearance.titleTodayColor = ("#54a767").toColor()
calendar.appearance.selectionColor = ("#788f9b").toColor()
calendar.appearance.todayColor = nil
calendar.appearance.subtitleWeekendColor = UIColor.white
calendar.placeholderType = .none /// to remove last month dates
calendar.appearance.headerMinimumDissolvedAlpha = 0 // removes next prev month title.
calendar.backgroundColor = .clear
calendar.firstWeekday = 2
calendar.scope = .week
ViewCalendar.addSubview(calendar)
func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition)
print(date)
calendar.setCurrentPage(date, animated: true)
calendar.select(date)
【问题讨论】:
【参考方案1】:您可以通过替换所选日期的可见FSCalendarHeaderCell
s 的文本来做到这一点,如下所示
func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition)
print(date)
calendar.setCurrentPage(date, animated: true)
calendar.select(date)
//format the selectedDate and set to the header
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = calendar.appearance.headerDateFormat
for cell in calendar.calendarHeaderView.collectionView.visibleCells
(cell as! FSCalendarHeaderCell).titleLabel.text = dateFormatter.string(from: date)
【讨论】:
完美。非常感谢。 很高兴为您提供帮助,您能否接受答案,因为它解决了问题。谢谢 再次打扰您,但我观察到,每当我们加载应用程序时,默认标题日期设置为16 September 2021 Thursday
,就像今天它的15 September 2021
如果你想让 headerView 有今天的开头,使用一个新的 Date() 并在 setupFSCalendar() 的末尾运行 headerView 标题更改逻辑。
是的,我正在使用新的Date()
,但没有HeaderView Title property
以上是关于使用选择日期快速更新 FSCalendar 标头值的主要内容,如果未能解决你的问题,请参考以下文章
FSCalendar select day 选择前一天 23:00
Swift FSCalendar 在表格视图的日历显示事件中选择日期