1

カレンダーには TapkuLibrary を使用しています。月の特定の日に異なる操作を表示するなど、イベント マークを変更したい。2枚目の画像のようなものを実現したいです。

デフォルトの TapkuLibrary カレンダー

デフォルトの TapkuLibrary カレンダー

こういうの好きになりたい

こういうの好きになりたい

4

2 に答える 2

3

注意:まず、Tapku が現在 MonthView マークをどのように描画しているかを説明し、次にそれを変更する方法を提案します。

Tapku は実際にそれらのマークを画像として設定しません。それらを文字列として設定します!TKCalendarMonthView で • を検索します。マークは、TKCalendarMonthView の 2 つの異なる場所で設定されます。最初に、drawTileInRect:day:mark:font... メソッドで、drawRect メソッドで各タイルで個別に呼び出されます。次に、プロパティ「ドット」を使用します。これは、ユーザーが「選択した」セルに適用され、テキストの色などが異なるため、独自のプロパティを調整する必要があります。

独自の画像を設定するには、Tapku のこれら 2 つの場所を変更する必要があります (それほど難しくはありません。かなりアクセスしやすいプロジェクトです)。したがって、セルのテキストを • に設定する代わりに、その画像を提供する画像に設定する必要があります。

この画像を提供するには、いくつかの方法があります。最も簡単なのは、(デリゲートによって設定された)「マーク」配列の Tapku の概念をやり直すことです。整数の配列を作成する代わりに、おそらく UIImage の配列を作成できます。それでも、コードに「画像がない」ことを伝える方法が必要です。空白の画像があり、デフォルトでセルに適用されるだけでしょうか?

説明が必要な場合はお知らせください。

于 2012-07-20T11:24:53.703 に答える
2

-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);

    }
}
于 2013-02-08T08:59:24.693 に答える