johnvuko / JTCalendar

A customizable calendar view for iOS.
MIT License
2.76k stars 534 forks source link

Dynamic Height of Calendar View #330

Open aatish-rajkarnikar opened 7 years ago

aatish-rajkarnikar commented 7 years ago

how to change calendar between 4 lines or 5 lines according to the number of days in month.

davidpaul0880 commented 7 years ago
  1. In JTCalendarDelegate.h file add - (NSUInteger)numberOfWeeksRowInMonth:(NSDate *)currentDate;
  2. In JTCalendarDelegateManager.h add - (NSUInteger)numberOfWeeksRow:(NSDate *)currentDate;
  3. In JTCalendarDelegateManager.m add
    - (NSUInteger)numberOfWeeksRow:(NSDate *)currentDate {
         if(_manager.delegate && [_manager.delegate respondsToSelector:@selector(numberOfWeeksRowInMonth:)]){
         return [_manager.delegate numberOfWeeksRowInMonth:currentDate];
         }
         return _manager.settings.pageViewNumberOfWeeks;
    }
  4. In JTCalendarPageView.m file, inside - (void)reload, replace _numberOfWeeksDisplayed = MIN(_manager.settings.pageViewNumberOfWeeks, MAX_WEEKS_BY_MONTH); with _numberOfWeeksDisplayed = MIN([_manager.delegateManager numberOfWeeksRow:_date], MAX_WEEKS_BY_MONTH);
  5. In JTCalendarPageView.m file, inside - (void)reload , add below statement at the end of the function [self layoutSubviews];

And In Your Controller, implement

func numberOfWeeksRow(inMonth currentDate: Date!) -> UInt {
//calcuate numberOFweeksInMonth of currentDate and return.
}

Also implement calendarDidLoadNextPage, calendarDidLoadPreviousPage delegates to change the height of your calendarView (JTHorizontalCalendarView) as per numberOFweeksInMonth in calendar.date()