我有一个在 swift 4 中使用 FSCalendar 的项目。我有绿色和红色的事件。但是在选择特定日期时,事件的颜色会变为选择颜色。我该如何解决这个问题,如下图所示。蓝色选择颜色上的事件点必须是绿色或红色。
对于图像,你可以看到这个链接:https ://github.com/WenchaoD/FSCalendar/issues/919
我有一个在 swift 4 中使用 FSCalendar 的项目。我有绿色和红色的事件。但是在选择特定日期时,事件的颜色会变为选择颜色。我该如何解决这个问题,如下图所示。蓝色选择颜色上的事件点必须是绿色或红色。
对于图像,你可以看到这个链接:https ://github.com/WenchaoD/FSCalendar/issues/919
对于具有不同颜色的多个事件,您必须使用FSCalendarDelegateAppearance
方法。
例子::::
//MARK: - 设置日期格式
fileprivate let formatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
return formatter }()
//MARK: - 分配事件数组
var arrayOfEvent1 : [String] = ["2018-08-14","2018-08-15"]
var arrayOfEvent2 : [String] = ["2018-08-14","2018-09-16"]
func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int
{
let strDate = self.formatter.string(from:date)
if arrayOfEvent1.contains(strDate) && arrayOfEvent2.contains(strDate)
{
return 2
}
else if arrayOfEvent1.contains(strDate)
{
return 1
}
else if arrayOfEvent2.contains(strDate)
{
return 1
}
return 0
}
func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance,eventDefaultColorsFor date: Date) -> [UIColor]?
{
let strDate = formatter.string(from: date)
if arrayOfEvent1.contains(strDate) && arrayOfEvent2.contains(strDate)
{
return [UIColor.red ,UIColor.blue]
}
else if arrayOfEvent1.contains(strDate)
{
return [UIColor.red]
}
else if arrayOfEvent2.contains(strDate)
{
return [UIColor.blue]
}
return [UIColor.clear]
}
func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, eventSelectionColorsFor date: Date) -> [UIColor]? {
let strDate = formatter.string(from: date)
if arrayOfEvent1.contains(strDate) && arrayOfEvent2.contains(strDate)
{
return [UIColor.red ,UIColor.blue]
}
else if arrayOfEvent1.contains(strDate)
{
return [UIColor.red]
}
else if arrayOfEvent2.contains(strDate)
{
return [UIColor.blue]
}
return [UIColor.clear]
}
执行上述委托方法后,我们在“2018-08-14”上得到两个事件。第一个事件颜色为红色,第二个事件颜色为蓝色。
希望这会帮助你。