首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在两周模式下实现日历视图(使用JTCalendar示例)

如何在两周模式下实现日历视图(使用JTCalendar示例)
EN

Stack Overflow用户
提问于 2015-03-20 06:03:11
回答 3查看 1.7K关注 0票数 3

代码语言:javascript
复制
                                      I have implemented JTCalendar view to get both month and week view but in week view,i need to get two week view .Suggest me coding.

JTCalendar代码:

代码语言:javascript
复制
CGFloat x = 0;
CGFloat width = self.frame.size.width / 7.;

CGFloat高度= self.frame.size.height;

代码语言:javascript
复制
if(self.calendarManager.calendarAppearance.readFromRightToLeft)
{
    for(UIView *view in [[self.subviews reverseObjectEnumerator] allObjects])
    {
        view.frame = CGRectMake(x, 0, width, height);
        x = CGRectGetMaxX(view.frame);
    }
}
else{
    for(UIView *view in self.subviews)
    {
        view.frame = CGRectMake(x, 0, width, height);
        x = CGRectGetMaxX(view.frame);
    }
}

[super layoutSubviews];

#//周全场表演

  • (空)configureConstraintsForSubviews
代码语言:javascript
复制
{
CGFloat weeksToDisplay;

if(cacheLastWeekMode)
{
    weeksToDisplay = 1 ;
}
else{
    weeksToDisplay = (CGFloat)(WEEKS_TO_DISPLAY + 1); // + 1 for weekDays
}

CGFloat y = 0;
CGFloat width = self.frame.size.width;
CGFloat height = self.frame.size.height / weeksToDisplay;

for(int i = 0; i < self.subviews.count; ++i){
    UIView *view = self.subviews[i];

    view.frame = CGRectMake(0, y, width, height);
    y = CGRectGetMaxY(view.frame);

    if(cacheLastWeekMode && i == weeksToDisplay + 1){
        height = 0.;
    }
}
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-13 05:23:43

在MonthView中,更改周以显示为3,也要执行以下注释:委托方法setBeginingofmonth中的以下代码

代码语言:javascript
复制
 for(JTCalendarWeekView *view in weeksViews)
{
    view.currentMonthIndex = currentMonthIndex;
    [view setBeginningOfWeek:currentDate];

    NSDateComponents *dayComponent = [NSDateComponents new];
    dayComponent.day = 7;

    currentDate = [calendar dateByAddingComponents:dayComponent toDate:currentDate options:0];

    // Doesn't need to do other weeks
//        if(self.calendarManager.calendarAppearance.isWeekMode)
//        {
//            break;
//        }
    }

在JTCalendar updatePage方法中,更改7到14,如下所示

代码语言:javascript
复制
 if(!self.calendarAppearance.isWeekMode)
{
    dayComponent.month = currentPage - (NUMBER_PAGES_LOADED / 2);
}
else
{
    //to show next starting week for two weeks mode put 14
    dayComponent.day = 14 * (currentPage - (NUMBER_PAGES_LOADED / 2));
}
票数 1
EN

Stack Overflow用户

发布于 2015-04-21 11:45:44

更改weeksToDisplay。

代码语言:javascript
复制
if(cacheLastWeekMode)
{
weeksToDisplay = 3 ;
}   
票数 1
EN

Stack Overflow用户

发布于 2015-06-22 07:06:41

代码语言:javascript
复制
- (void)setBeginningOfMonth:(NSDate *)date
{
  NSDate *currentDate = date;

NSCalendar *calendar = self.calendarManager.calendarAppearance.calendar;

{
    NSDateComponents *comps = [calendar components:NSCalendarUnitMonth|NSCalendarUnitDay fromDate:currentDate];

    currentMonthIndex = comps.month;
    // Hack
    if(comps.day >7)
    {
        currentMonthIndex = (currentMonthIndex % 12) + 1;
    }
}

for(JTCalendarWeekView *view in weeksViews)
{
    view.currentMonthIndex = currentMonthIndex;
    [view setBeginningOfWeek:currentDate];

    NSDateComponents *dayComponent = [NSDateComponents new];
    dayComponent.day = 7;

    currentDate = [calendar dateByAddingComponents:dayComponent toDate:currentDate options:0];

    // Doesn't need to do other weeks
//        if(self.calendarManager.calendarAppearance.isWeekMode)
   //        {
   //            break;
 //        }
   }
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29160361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档