Выбор цвета меняет цвет событий в FSCalendar - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть проект, использующий FSCalendar в swift 4. У меня есть события зеленого и красного цвета. Но при выборе конкретных дат цвет событий меняется на цвет выделения. Как я могу решить эту проблему, как показано на рисунке ниже. Точки события на синем цвете выбора должны быть зеленого или красного цвета.

Для изображения вы можете увидеть эту ссылку: https://github.com/WenchaoD/FSCalendar/issues/919

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Для нескольких событий с разными цветами, вы должны использовать метод 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». Цвет первого события - красный, а второго - синий.

Надеюсь, это поможет вам.

0 голосов
/ 25 апреля 2018

Мне кажется, вы не установили eventSelectionColor Свойство FSCalendar.

Вы можете установить его программно, используя приведенный ниже код.

calendar.appearance.eventSelectionColor = UIColor.green

или

Вы можете установить его из раскадровки в поле инспектора Атрибутов. Установите свойство цвета выбора события FSCalendar, как показано на рисунке ниже.

enter image description here

Надеюсь, это поможет вам.

...