我使用TapkuLibrary作为我的日历。我想更改事件标记,例如在一个月的某些日子显示不同的操作。我希望实现类似第二张图像的东西。
默认TapkuLibrary日历
我想要喜欢这样的东西
答案 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);
}
}