カレンダーには TapkuLibrary を使用しています。月の特定の日に異なる操作を表示するなど、イベント マークを変更したい。2枚目の画像のようなものを実現したいです。
デフォルトの TapkuLibrary カレンダー
こういうの好きになりたい
カレンダーには TapkuLibrary を使用しています。月の特定の日に異なる操作を表示するなど、イベント マークを変更したい。2枚目の画像のようなものを実現したいです。
デフォルトの TapkuLibrary カレンダー
こういうの好きになりたい
注意:まず、Tapku が現在 MonthView マークをどのように描画しているかを説明し、次にそれを変更する方法を提案します。
Tapku は実際にそれらのマークを画像として設定しません。それらを文字列として設定します!TKCalendarMonthView で • を検索します。マークは、TKCalendarMonthView の 2 つの異なる場所で設定されます。最初に、drawTileInRect:day:mark:font... メソッドで、drawRect メソッドで各タイルで個別に呼び出されます。次に、プロパティ「ドット」を使用します。これは、ユーザーが「選択した」セルに適用され、テキストの色などが異なるため、独自のプロパティを調整する必要があります。
独自の画像を設定するには、Tapku のこれら 2 つの場所を変更する必要があります (それほど難しくはありません。かなりアクセスしやすいプロジェクトです)。したがって、セルのテキストを • に設定する代わりに、その画像を提供する画像に設定する必要があります。
この画像を提供するには、いくつかの方法があります。最も簡単なのは、(デリゲートによって設定された)「マーク」配列の Tapku の概念をやり直すことです。整数の配列を作成する代わりに、おそらく UIImage の配列を作成できます。それでも、コードに「画像がない」ことを伝える方法が必要です。空白の画像があり、デフォルトでセルに適用されるだけでしょうか?
説明が必要な場合はお知らせください。
-DrawTileInRect の代わりに次のメソッドを使用して、1 か月の複数の色を指定し、日付を確認します
- (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);
}
}