[swift] FSCalendar에서 특정 날짜의 배경색 변경

FSCalendar는 iOS에서 달력을 표시하는 라이브러리로 많이 사용됩니다. 특정 날짜의 배경색을 변경하는 방법에 대해 알아보겠습니다.

import FSCalendar

class ViewController: UIViewController, FSCalendarDelegate, FSCalendarDataSource {

    @IBOutlet weak var calendar: FSCalendar!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 날짜 선택 delegate
        calendar.delegate = self
        calendar.dataSource = self
    }

    func calendar(_ calendar: FSCalendar, appearance: FSCalendarAppearance, fillDefaultColorFor date: Date) -> UIColor? {
        let selectedDate = // 체크하고자 하는 특정 날짜
        let currentDate = // 현재 날짜

        if Calendar.current.isDate(selectedDate, inSameDayAs: date) {
            // 특정 날짜와 선택된 날짜가 같을 경우 배경색을 변경
            return UIColor.red
        } else if Calendar.current.isDate(currentDate, inSameDayAs: date) {
            // 선택된 날짜와 현재 날짜가 같을 경우 배경색을 변경
            return UIColor.blue
        }
        
        return nil
    }
}

위의 코드는 FSCalendarDelegate 및 FSCalendarDataSource 프로토콜을 적용한 ViewController 클래스에서 사용하는 예시입니다.

calendar(_:, appearance:, fillDefaultColorFor:) 메서드는 달력의 각 날짜의 배경색을 변경할 때 사용됩니다. 이 메서드에서 선택하고자 하는 특정 날짜와 현재 날짜를 비교하여 원하는 배경색을 반환하도록 구현하면 됩니다.

위의 예시에서는 selectedDatecurrentDate 변수를 사용하여 특정 날짜와 선택된 날짜, 그리고 현재 날짜를 비교합니다. 특정 날짜와 선택된 날짜가 같을 경우 UIColor.red로 배경색을 변경하고, 선택된 날짜와 현재 날짜가 같을 경우 UIColor.blue로 배경색을 변경합니다.

실제로 프로젝트에 적용하려면 selectedDatecurrentDate 변수에 원하는 날짜 값을 설정해주어야 합니다.

FSCalendar의 기능을 더욱 심화시키고 싶은 경우에는 FSCalendar GitHub 페이지를 참고하면 도움이 됩니다.