Для нескольких событий с разными цветами, вы должны использовать метод FSCalendarDelegateAppearance
.
Пример :::: * * +1004
// 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». Цвет первого события - красный, а второго - синий.
Надеюсь, это поможет вам.