iphone обновить изображения UIImageView - PullRequest
1 голос
/ 17 июня 2009

У меня довольно простой вопрос. У меня есть несколько (5) UIImageView изображений на мой экран. Когда я нажимаю кнопку, я хочу изменить каждое изображение к чему-то еще. Я также хочу воспроизводить звук при изменении каждого изображения.

Так что я в основном хочу звук щелчка при изменении каждого изображения.

Проблема, по какой-то причине, если я скажу 5 изображений,
сначала воспроизводится звук 5 раз, а затем меняются изображения.

Как будто изображения обновляются только тогда, когда управление возвращается к пользователь для ввода.

Как я могу "заставить" его обновить изображения, как только я скажу, какое изображение отображать?

Я новичок в iphone / macworld, так что будьте спокойны: -)

Rick

Ответы [ 4 ]

1 голос
/ 25 декабря 2010

Если вы ищете способ периодически обновлять UIImageView, вы можете сослаться на следующее: http://www.shanison.com/2010/12/25/uiimageview-load-remote-image/

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

Это сработало для меня, когда я захотел изменить фон uiimageview, обновить его и продолжить выполнение кода после этого:

-(void)imgTapped_event:(UIImageView*)imgViewTapped
{
     imgViewTapped.backgroundColor=[UIColor whiteColor];

     //let the system update ui changes
     [NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0f]];

     //continue your code execution, play sounds etc...

     //my helper method to play sound
     [self playSound:@"goodAnswer" sync:YES loops:0]; 
 }
0 голосов
/ 17 июня 2009

Это похоже на то, что изображения обновляются только тогда, когда управление возвращается пользователю для ввода.

Именно так и происходит. Пользовательский интерфейс обновляется в главном потоке, поэтому обновления не выполняются во время выполнения кода.

Чтобы достичь того, чего вы хотите, вам понадобятся таймеры. Взгляните на документацию NSTimer. Вам нужно создать таймер, который запускает метод для изменения вашего второго изображения, а затем требует таймер для изменения вашего третьего изображения. Есть удобный способ создать таймер, который вам нужен: + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

[NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage2:) userInfo:nil repeats:NO];

тогда у вас есть метод:

- (void) updateImage2(NSTimer*)theTimer
{

     //Update image 2 here
     // play sound 2 here

    [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage3:) userInfo:nil repeats:NO];
}

Я оставлю вам возможность реализовать метод updateImage3:; -)

Запуск таких обновлений дает основному потоку шанс обновить пользовательский интерфейс.

0 голосов
/ 17 июня 2009

Похоже, вы, вероятно, загружаете изображения с диска или из сети, когда воспроизводите звук асинхронно. Возможно, вы используете AudioServicesPlaySystemSound вместе с UIImage +imageWithContentsOfURL:? Фактическая загрузка изображения и код воспроизведения звука были бы здесь наиболее полезны.

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