현재 YM캘린더를 이용하여 일정에 대한 앱을 만들려고 합니다
일정을 추가할 때 종료일에 따라 라벨이 연속적으로 이어지게 하고 싶은데
문제는 일정의 종료일이 아무리 길어도 해당 행을 넘어가지 못합니다…
//이벤트에 대한 데이터 레인지를 반환하는 함수
func calendarView(_ view: YMCalendarView, dateRangeForEventAtIndex index: Int, date: Date) → DateRange? {
return DateRange(start: date, end: calendar.endOfMonthForDate(date))
}
예시로 모든 일정이 말일까지 잡혀있다고 가정하고 해당 달의 4일과과 마지막 날에 일정을 추가하였습니다
위와 같이 나타납니다 그래서 어디서 이 함수가 정의 되어있는지 찾아보니
func eventsRowView(_ view: YMEventsRowView, rangeForEventAtIndexPath indexPath: IndexPath) → NSRange {
var comps = DateComponents()
comps.day = indexPath.section
guard let date = calendar.date(byAdding: comps, to: view.monthStart),
let dateRange = dataSource?.calendarView(self, dateRangeForEventAtIndex: indexPath.item, date: date) else {
return NSRange()
}
let start = max(0, calendar.dateComponents([.day], from: view.monthStart, to: dateRange.start).day!)
var end = calendar.dateComponents([.day], from: view.monthStart, to: dateRange.end).day!
if dateRange.end.timeIntervalSince(calendar.startOfDay(for: dateRange.end)) >= 0 {
end += 1
}
end = min(end, NSMaxRange(view.daysRange))
return NSRange(location: start, length: end - start)
}
이해한 바로는 해당 행의 끝을 넘어가지 못하도록 범위를 반환합니다 그렇다면 여러줄에 걸쳐서 나타나는 일정은 어떻게 짜야할지 도움주시면 감사하겠습니다