Изменение образа UIImage со временем - PullRequest
0 голосов
/ 12 мая 2011

Я хочу изменить изображение UIImageView и через 3 секунды вернуться к первому изображению ... Это мой код:

-(void)change: (UIImageView *)sender
{
    UIImage *image = [UIImage imageNAmed: @"anImage"];
    [sender setImage:image];
    [self performSelector: @selector(doNothing) withObject:nil afterDelay:3];
    [sender setImage: [UIImage imageNamed: @"firstImage"]];
}

Это не работает.

Ответы [ 3 ]

0 голосов
/ 12 мая 2011

Не могли бы вы опубликовать код для doNothing тоже, пожалуйста?

Если doNothing действительно ничего не делает, то происходит то, что метод doNothing вызывается через 3 секунды после выполнения следующей строки:

[self performSelector: @selector(doNothing) withObject:nil afterDelay:3];

Но вот в чем дело, следующая строка выполняется сразу после того, как ваш doNothing метод был запланирован для запуска через три секунды:

[sender setImage: [UIImage imageNamed: @"firstImage"]];

Другими словами, выполнение метода не ожидает завершения выполнения метода doNothing, оно просто продолжается, и doNothing запускается в отдельном потоке.

0 голосов
/ 12 мая 2011

вы сказали выполнять функцию doNothing после 3 секунд задержки. Поэтому через 3 секунды он будет вызван, поэтому измените изображение обратно на firstImage в функции doNothing.

0 голосов
/ 12 мая 2011

Попробуйте:

-(void)change: (UIImageView *)sender
{
    UIImage *image = [UIImage imageNAmed: @"anImage"];
    [sender setImage:image];
    [sender performSelector: @selector(setImage:) withObject:[UIImage imageNamed: @"firstImage"] afterDelay:3];
}

performSelector планирует вызов селектора с некоторой задержкой. Не задерживает выполнение текущего метода

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