[swift] FSCalendar에서 특정 날짜의 색상 변경하기

FSCalendar은 iOS 애플리케이션에서 캘린더 뷰를 구현하는 데 사용되는 라이브러리입니다. 이 라이브러리를 사용하면 날짜에 대한 일정을 표시하고 특정 날짜의 스타일을 변경할 수 있습니다. 이번에는 FSCalendar에서 특정 날짜의 색상을 변경하는 방법에 대해 알아보겠습니다.

1. FSCalendarDelegate 메서드 구현하기

FSCalendar에서 날짜를 표시하는 뷰의 색상을 변경하려면 FSCalendarDelegate 프로토콜을 구현해야 합니다. 아래 예제 코드는 특정 날짜의 색상을 변경하는 예제입니다.

func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, fillDefaultColorFor date: Date) -> UIColor? {
    let calendar = Calendar.current
    let todayDate = Date() // 현재 날짜
    
    if calendar.isDate(date, inSameDayAs: todayDate) {
        // 오늘 날짜인 경우 색상을 변경
        return UIColor.red
    } else if date > todayDate {
        // 오늘 이후의 날짜인 경우 색상을 변경
        return UIColor.blue
    } else {
        // 기본 색상 반환
        return nil
    }
}

위 코드는 fillDefaultColorFor 메서드를 구현하여 특정 날짜에 대한 색상을 지정합니다. Calendar.current.isDate(_:inSameDayAs:) 메서드를 사용하여 현재 날짜와 비교하여 색상을 변경할 수 있습니다. 오늘 날짜인 경우 UIColor.red로, 오늘 이후의 날짜인 경우 UIColor.blue로 설정되도록 구현되어 있습니다.

2. FSCalendar에 delegate 설정하기

위에서 구현한 FSCalendarDelegate 메서드를 호출하기 위해 FSCalendar에 delegate를 설정해야 합니다. 아래 예제 코드는 FSCalendar의 delegate를 설정하는 방법을 보여줍니다.

class ViewController: UIViewController, FSCalendarDelegate {
    
    @IBOutlet weak var calendarView: FSCalendar!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        calendarView.delegate = self
    }
    
    // ...
}

위 코드에서 calendarView는 FSCalendar의 인스턴스를 가리키는 IBOutlet입니다. viewDidLoad() 메서드에서 calendarView.delegateself를 할당하여 delegate를 설정합니다.

이제 FSCalendar에서 특정 날짜의 색상을 변경하는 방법을 알게 되었습니다. FSCalendarDelegate 메서드를 구현하여 원하는 날짜에 대한 색상을 지정하고 delegate를 설정하여 해당 색상이 표시되도록 할 수 있습니다.