0

我有一个在 swift 4 中使用 FSCalendar 的项目。我有绿色和红色的事件。但是在选择特定日期时,事件的颜色会变为选择颜色。我该如何解决这个问题,如下图所示。蓝色选择颜色上的事件点必须是绿色或红色。

对于图像,你可以看到这个链接:https ://github.com/WenchaoD/FSCalendar/issues/919

4

2 回答 2

4

我认为你没有设置 FSCalendar 的eventSelectionColor属性。

您可以使用以下代码以编程方式设置它。

calendar.appearance.eventSelectionColor = UIColor.green

或者

您可以从情节提要的属性检查器字段中设置它。如下图所示设置 FSCalendar 的事件选择颜色属性。

在此处输入图像描述

希望这会帮助你。

于 2018-04-25T11:56:05.320 回答
0

对于具有不同颜色的多个事件,您必须使用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”上得到两个事件。第一个事件颜色为红色,第二个事件颜色为蓝色。

希望这会帮助你。

于 2018-09-04T16:37:31.550 回答