TKCalendar - Пользовательское изображение на день? - PullRequest
1 голос
/ 03 апреля 2012

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

Любая помощь очень ценится!

Ответы [ 3 ]

1 голос
/ 30 августа 2012

Вы можете выполнить следующие шаги, чтобы установить пользовательское изображение

  1. Вы должны щелкнуть правой кнопкой мыши на TapkuLibrary.bundle и выбрать показать содержимое пакета

  2. Теперь вы можете видеть папку как Изображения Если вы откроете эту папку с изображениями, вы увидите некоторые папки

  3. Среди этих папок вы должны открыть папку calendar

  4. Вы можете увидеть так много изображений. теперь вы можете менять изображения, как хотите

Я думаю, что это может вам помочь.

0 голосов
/ 23 декабря 2012

Нет, это все ваши ответы неверны.То, что я хотел, было возможностью изменить изображение каждого дня на пользовательское изображение, которое я выбрал бы для каждого дня.Я взломал код вместе и заставил его работать.Если кто-то ищет, как это сделать, просто перейдите на TKCalendarMonthView.m и найдите метод

- (void) drawRect:(CGRect)rect

.Теперь в этом методе скопируйте следующее (это упрощенная версия кода, которая у меня есть, поэтому вы должны создать ее самостоятельно):

CGContextRef context = UIGraphicsGetCurrentContext();

    UIImage *tile = [UIImage imageWithContentsOfFile:TKBUNDLE(@"TapkuLibrary.bundle/Images/calendar/Month Calendar Date Tile.png")];

CGRect r = CGRectMake(0, 0, 46, 44);
CGContextDrawTiledImage(context, r, tile.CGImage);



int index = 0;

UIFont *font = [UIFont boldSystemFontOfSize:dateFontSize];
UIFont *font2 =[UIFont boldSystemFontOfSize:dotFontSize];
UIColor *color = [UIColor grayColor];

    //first do the boxes that are still visible from the previous month 
    //
    //

if(firstOfPrev>0){
    [color set];
    for(int i = firstOfPrev;i<= lastOfPrev;i++){
        r = [self rectForCellAtIndex:index];

    ///////////////////////////
    ///////////////////////////
    ///////////////////////////

    int indexMoved = 7;
    r.origin.y -= indexMoved; //this moves the block to put it back in it's place

    //add an image to the rect - note you can add them over each other 
    [[UIImage imageNamed:[NSString stringWithFormat:@"t.png"]] drawInRect:r];


    r.origin.y += indexMoved; //move back the block


    ///////////////////////////
    ///////////////////////////
    ///////////////////////////


        if ([marks count] > 0)
            [self drawTileInRect:r day:i mark:[[marks objectAtIndex:index] boolValue] font:font font2:font2];
        else
            [self drawTileInRect:r day:i mark:NO font:font font2:font2];
        index++;

    }
}


    //Now to blocks for current month 
    //
    //
color = [UIColor colorWithRed:59/255. green:73/255. blue:88/255. alpha:1];
[color set];

for(int i=1; i <= daysInMonth; i++){
    r = [self rectForCellAtIndex:index];

     ///////////////////////////
    ///////////////////////////
    ///////////////////////////

    int indexMoved = 7;
    r.origin.y -= indexMoved; //this moves the block to put it back in it's place

    //add an image to the rect - note you can add them over each other 
    [[UIImage imageNamed:[NSString stringWithFormat:@"t.png"]] drawInRect:r];


    r.origin.y += indexMoved; //move back the block


    ///////////////////////////
    ///////////////////////////
    ///////////////////////////

    if(today == i){ //this is done to highlight today's block
        int indexMoved = 7;
        r.origin.y -= indexMoved;
        [[UIColor colorWithRed:59/255. green:73/255. blue:88/255. alpha:1] set];
        //set the image to whatever you want today's block to have
        [[UIImage imageNamed:[NSString stringWithFormat:@"Tile-Border-Green.png"]] drawInRect:r];
        r.origin.y += indexMoved;
    }

    if ([marks count] > 0)
        [self drawTileInRect:r day:i mark:[[marks objectAtIndex:index] boolValue] font:font font2:font2];
    else
        [self drawTileInRect:r day:i mark:NO font:font font2:font2];
    index++;

}

//Finally, do blocks for the next month who's blocks are visible 
    //
    //

[[UIColor grayColor] set];
int i = 1;
while(index % 7 != 0){
    r = [self rectForCellAtIndex:index] ;


    ///////////////////////////
    ///////////////////////////
    ///////////////////////////

    int indexMoved = 7;
    r.origin.y -= indexMoved; //this moves the block to put it back in it's place

    //add an image to the rect - note you can add them over each other 
    [[UIImage imageNamed:[NSString stringWithFormat:@"t.png"]] drawInRect:r];


    r.origin.y += indexMoved; //move back the block


    ///////////////////////////
    ///////////////////////////
    ///////////////////////////

    if ([marks count] > 0)
        [self drawTileInRect:r day:i mark:[[marks objectAtIndex:index] boolValue] font:font font2:font2];
    else
        [self drawTileInRect:r day:i mark:NO font:font font2:font2];
    i++;
    index++;


}

Обратите внимание, что она разбита на три основные области (каждаяс петлей для).Это (по порядку) блоки из предыдущего месяца, которые все еще видны, блоки из текущего месяца и, наконец, блоки из следующего месяца, которые видны в текущем представлении.

Я действительно надеюсь, что это кому-то поможет, потому что для настройки потребовалось много головной боли!

Приветствия!

0 голосов
/ 04 июля 2012

Просто отредактируйте изображения в TapkuLibrary.bundle (щелкните правой кнопкой мыши, покажите содержимое пакета)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...