如何更改TapkuLibrary日历对象上的事件标记

时间:2011-08-02 12:40:03

标签: objective-c ios cocoa-touch tapku

我使用TapkuLibrary作为我的日历。我想更改事件标记,例如在一个月的某些日子显示不同的操作。我希望实现类似第二张图像的东西。

默认TapkuLibrary日历

Default TapkuLibrary calendar

我想要喜欢这样的东西

I want to like something like this

2 个答案:

答案 0 :(得分:3)

N.B。我首先要解释Tapku目前如何绘制MonthView标记,然后我会提出一种方法来改变它。

Tapku实际上并没有将这些标记设置为图像;它将它们设置为字符串!搜索TKCalendarMonthView用于•。标记在TKCalendarMonthView的两个不同位置设置:首先,在drawTileInRect:day:mark:font ...方法中,在drawRect方法中单独调用每个tile。第二,使用属性'dot',它应用于用户的'selected'单元格,它具有不同的文本颜色等,因此需要调整自己的属性。

要设置自己的图像,你必须在这两个地方修改Tapku(不是非常困难;它是一个非常容易访问的项目)。因此,您不必将单元格的文本设置为•,而是必须将其图像设置为您提供的图像。

提供此图像可以通过几种不同的方式完成。最直接的方法是重做Tapku的'标记'数组概念(由代表设置)。也许你可以创建一个UIImages数组,而不是创建一个整数数组。仍然,你需要有一种方法来告诉代码“没有图像” - 可能有一个空白图像,并默认将其应用于单元格?

如果您需要任何澄清,请告诉我。

答案 1 :(得分:2)

使用bellow方法代替 - DrawTileInRect 一个月内多种颜色,检查日期

- (void) drawTileInRect:(CGRect)r day:(int)day mark:(BOOL)mark font:(UIFont*)f1 font2:(UIFont*)f2 sysFlag:(int)sysFlg userEventFlg:(int)userEventFlag diaryFlg:(int)diaryFlag momentsFlg:(int)momentsFlag
{
   
    @try {
        
        NSString *str = [NSString stringWithFormat:@"%d",day];
        [str retain];
        
        
        r.size.height -= 2;
        [str drawInRect: r
               withFont: f1
          lineBreakMode: UILineBreakModeWordWrap
              alignment: UITextAlignmentCenter];
        
        r.size.height = 10;
        r.origin.y += 18;
        
        CGRect y=CGRectMake(r.origin.x+5, r.origin.y-25, 12, 12);//5 5
        
        
        CGRect rect1=CGRectMake(r.origin.x, r.origin.y+7, 12, 12);
        CGRect rect2=CGRectMake(rect1.origin.x+18, r.origin.y+7, 12, 12);
        CGRect rect3=CGRectMake(rect2.origin.x+16, r.origin.y+7, 12, 12);
        
        if(sysFlg==1)
        {
            [[UIImage imageNamed:@"Blue_dot.png"] drawInRect:y];
        }
        
        if(userEventFlag==1)//1.png
        {
            [[UIImage imageNamed:@"Yellow_dot.png"] drawInRect:rect1];
        }
        
        
        if(momentsFlag==1)//3.png
        {
            [[UIImage imageNamed:@"Red_dot.png"] drawInRect:rect3];
        }
        

    }
    @catch (NSException * e) {
        NSLog(@"Exception: %@", e);

    }
}