Как параметризовать анимацию UIView? - PullRequest
0 голосов
/ 05 октября 2011

У меня есть много таких случаев, которые запускают различные анимации UIView. Я хотел бы написать модуль и параметризовать их, чтобы мне не пришлось повторять один и тот же код снова и снова. Каков наилучший способ передать (параметризованные) значения для animationRepeatCount & animationDuration?

case 10: //Animation Number 10
    //.........
    imageAnimation2.animationImages = [NSArray arrayWithObjects:
                                      [UIImage imageNamed:@"monkey_dancing_01.png"],
                                      [UIImage imageNamed:@"monkey_dancing_02.png"],
                                      [UIImage imageNamed:@"monkey_dancing_03.png"],
                                      [UIImage imageNamed:@"monkey_dancing_04.png"],
                                      nil];
    imageAnimation2.animationRepeatCount = 4;
    imageAnimation2.animationDuration = 2;
    [imageAnimation2 startAnimating];
    [self loadSoundEffectAudio:@"Monkey_10"];
    [self performSelector:@selector(stopSoundEffectAudio) withObject:nil afterDelay:4];
    break;

1 Ответ

0 голосов
/ 05 октября 2011

В зависимости от того, насколько регулярны ваши ресурсы и анимации, вы можете создать несколько утилитарных методов для обработки большей части этого.

Как сказать:

+ (void) loadAnimation:(UIImageView *)imageView name:(NSString *)filename
{
    NSMutableArray * array = [[NSMutableArray alloc] init];

    UIImage * image;
    int index = 1;
    NSString * string;

    do
    {
        string = [NSString stringWithFormat:@"%@%04d.png", filename, index++];
        image = [UIImage imageNamed:string];
        if(image)
            [array addObject:image];
    } while (image != nil);

    imageView.animationImages = array;
    imageView.animationDuration = [array count] / 18;
    [array release];
}

Приведенный выше код загружает анимации в массив с очень регулярными соглашениями об именах (XXXX.png). Все они также основаны на одной и той же частоте кадров, поэтому я могу одновременно определять продолжительность.

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