Как я могу изменить метки событий на объекте календаря TapkuLibrary - PullRequest
1 голос
/ 02 августа 2011

Я использую TapkuLibrary для своего календаря. Я хочу изменить метки событий, например, чтобы показать разные операции в определенные дни месяца. Я хочу добиться чего-то вроде второго изображения.

Стандартный календарь TapkuLibrary

Default TapkuLibrary calendar

Я хочу, чтобы что-то вроде этого

I want to like something like this

Ответы [ 2 ]

3 голосов
/ 20 июля 2012

N.B. Сначала я объясню, как Tapku в настоящее время рисует свои метки MonthView, а затем предложу способ его изменения.

Тапку не устанавливает эти метки как изображения; он устанавливает их как строки! Поиск TKCalendarMonthView для •. Метки устанавливаются в двух разных местах в TKCalendarMonthView: во-первых, в методе drawTileInRect: day: mark: font ..., который вызывается для каждой плитки отдельно в методе drawRect. Во-вторых, со свойством «точка», которое применяется к «выбранной» ячейке пользователя, которая имеет другой цвет текста и т. Д. И, следовательно, должна иметь свои собственные свойства.

Чтобы установить свои собственные изображения, вам нужно изменить Tapku в этих двух местах (не очень сложно; это довольно доступный проект). Таким образом, вместо того, чтобы устанавливать текст ячейки в •, вам нужно будет установить для ее изображения изображение, которое вы предоставляете.

Предоставление этого изображения может быть сделано несколькими различными способами. Самым простым будет переделать концепцию Тапку о массиве «меток» (установленную делегатом). Вместо того, чтобы создавать массив целых чисел, возможно, вы могли бы создать массив UIImages. Тем не менее, вам нужно иметь способ сказать коду «нет изображения» - может быть, иметь пустое изображение и просто применить его к ячейкам по умолчанию?

Дайте мне знать, если вам нужны какие-либо разъяснения.

2 голосов
/ 08 февраля 2013

используйте метод ниже вместо - 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);

    }
}
...