[swift] FSCalendar에서 특정 날짜의 텍스트 커스터마이징

FSCalendar은 iOS 앱에서 사용할 수 있는 유연하고 강력한 달력 라이브러리입니다. 이 라이브러리를 사용하여 달력을 표시하면서 특정 날짜의 텍스트를 사용자 정의하고자 한다면 아래의 방법을 따라할 수 있습니다.

1. FSCalendarDelegate를 구현하기

먼저, FSCalendarDelegate를 구현해야 합니다. 이는 달력의 이벤트를 처리하기 위한 프로토콜입니다.

class MyCalendarViewController: UIViewController, FSCalendarDelegate {
    // ...
}

2. 날짜 텍스트 커스터마이징 메서드 구현

특정 날짜의 텍스트를 커스터마이징하기 위해서는 calendar:subtitleForDate: 메서드를 구현해야 합니다. 이 메서드는 달력의 각 날짜에 대한 텍스트를 반환하는 역할을 합니다.

func calendar(_ calendar: FSCalendar, subtitleFor date: Date) -> String? {
    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy-MM-dd"

    let dateString = formatter.string(from: date)
    
    if dateString == "2022-10-31" {
        // 특정 날짜에 텍스트를 할당합니다.
        return "Happy Halloween!"
    }
    
    return nil
}

위의 예제에서는 2022-10-31에 해당하는 날짜에 대해서 “Happy Halloween!”이라는 텍스트를 표시하도록 설정했습니다.

3. FSCalendarDelegate를 설정하기

MyCalendarViewController 클래스에서 viewDidLoad 메서드나 다른 적절한 곳에서 FSCalendarDelegate를 설정해야 합니다.

override func viewDidLoad() {
    super.viewDidLoad()
    
    calendar.delegate = self
}

위의 코드에서 calendar은 FSCalendar 인스턴스입니다. 이 인스턴스를 구성한 뒤, 해당 인스턴스의 delegate 속성을 MyCalendarViewController로 설정하여 delegate 메서드가 호출되도록 합니다.

이제 달력을 화면에 표시하면, 특정 날짜에 대해 커스터마이즈한 텍스트가 정상적으로 나타날 것입니다.

결론

FSCalendar을 사용하여 iOS 앱에서 달력을 표시할 때, 특정 날짜의 텍스트를 커스터마이징하고자 한다면 calendar:subtitleForDate: 메서드를 구현하여 텍스트를 반환하면 됩니다. 이를 통해 사용자는 앱에서 필요한 정보를 달력의 특정 날짜에 표시할 수 있습니다.

참고자료