我使用 TapkuLibrary 作为我的日历。我想更改事件标记,例如在一个月的某些日子显示不同的操作。我想实现类似第二张图片的效果。
默认 TapkuLibrary 日历
我想喜欢这样的东西
我使用 TapkuLibrary 作为我的日历。我想更改事件标记,例如在一个月的某些日子显示不同的操作。我想实现类似第二张图片的效果。
默认 TapkuLibrary 日历
我想喜欢这样的东西
注意 我首先要解释 Tapku 当前是如何绘制它的 MonthView 标记的,然后我会提出一种改变它的方法。
Tapku 实际上并没有将这些标记设置为图像。它将它们设置为字符串!在 TKCalendarMonthView 中搜索 •。标记设置在 TKCalendarMonthView 中的两个不同位置:首先,在 drawTileInRect:day:mark:font... 方法中,该方法在 drawRect 方法中对每个图块单独调用。其次,使用属性“点”,它应用于用户的“选定”单元格,具有不同的文本颜色等,因此需要调整自己的属性。
要设置自己的图像,您必须在这两个地方修改 Tapku(不是很困难;这是一个非常容易访问的项目)。因此,您必须将其图像设置为您提供的图像,而不是将单元格的文本设置为 •。
可以通过几种不同的方式提供此图像。最直接的方法是重做 Tapku 的“标记”数组(由委托设置)的概念。您可以创建一个 UIImage 数组,而不是创建一个整数数组。不过,您需要有一种方法来告诉代码“没有图像”——也许有一个空白图像并默认将其应用于单元格?
如果您需要任何澄清,请告诉我。
使用波纹管方法代替 - 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);
}
}