[swift] FSCalendar에서 특정 날짜의 이벤트 리스트 색상 변경

FSCalendar는 iOS 앱에서 캘린더 뷰를 구현하는 데 사용되는 강력한 라이브러리입니다. 이 라이브러리를 사용하면 쉽게 사용자 정의 가능한 캘린더를 만들 수 있습니다. 이 문서에서는 FSCalendar에서 특정 날짜의 이벤트 리스트 색상을 변경하는 방법에 대해 설명하겠습니다.

1. FSCalendarDelegate 메소드 구현하기

우선 FSCalendarDelegate 프로토콜을 채택한 클래스의 메소드를 구현해야 합니다. 이 메소드는 캘린더에 날짜를 그리는 데 사용됩니다. 아래의 코드는 FSCalendarDelegate 프로토콜의 calendar(_ calendar: FSCalendar, cellFor date: Date, at position: FSCalendarMonthPosition) -> FSCalendarCell? 메소드를 구현하는 예시입니다.

func calendar(_ calendar: FSCalendar, cellFor date: Date, at position: FSCalendarMonthPosition) -> FSCalendarCell? {
    // 이벤트가 있는 날짜인지 확인
    if events.contains(date) {
        // 이벤트 색상 변경
        if let cell = calendar.dequeueReusableCell(withIdentifier: "EventCell", for: date, at: position) as? FSCalendarEventCell {
            cell.eventColor = UIColor.red // 이벤트 색상을 빨간색으로 변경
            return cell
        }
    }
    return nil
}

위의 코드에서 events는 이벤트가 있는 날짜를 저장하는 배열입니다. 이 배열에 특정 날짜가 포함되어 있으면 해당 날짜의 이벤트 색상을 변경합니다.

2. FSCalendarEventCell 커스터마이징하기

FSCalendarEventCell은 FSCalendarCell을 상속받은 클래스로, 이벤트를 나타내는 데 사용됩니다. 이 클래스를 사용하여 이벤트 색상을 변경할 수 있습니다. 아래의 코드는 FSCalendarEventCell을 커스터마이징하는 예시입니다.

class CustomEventCell: FSCalendarEventCell {
    override func layoutSubviews() {
        super.layoutSubviews()
        // 이벤트 색상 변경
        self.fillColor = UIColor.blue // 이벤트 색상을 파란색으로 변경
    }
}

위의 코드에서 layoutSubviews() 메소드를 오버라이드하여 이벤트 색상을 변경합니다. 위의 예시에서는 이벤트 색상을 파란색으로 변경하도록 설정되어 있습니다.

3. FSCalendar에 커스텀 이벤트 셀 등록하기

마지막으로, FSCalendar 인스턴스에서 위에서 생성한 커스텀 이벤트 셀을 등록해야 합니다. 아래의 코드는 FSCalendar에 커스텀 이벤트 셀을 등록하는 예시입니다.

calendar.register(CustomEventCell.self, forCellReuseIdentifier: "EventCell")

위의 코드에서 “EventCell”은 커스텀 이벤트 셀의 재사용 식별자입니다. 이 재사용 식별자를 이용하여 캘린더에서 이벤트가 있는 날짜에 커스텀 이벤트 셀을 사용할 수 있습니다.

위의 세 단계를 따라하면 FSCalendar에서 특정 날짜의 이벤트 리스트 색상을 변경할 수 있습니다. FSCalendar의 다양한 메소드와 커스터마이징 가능한 속성을 활용하여 원하는 캘린더 뷰를 만들어보세요.

참고 자료