iphone обновить изображения UIImageView

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

Поэтому в основном я хочу, чтобы каждый звук менялся.

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

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

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

Я новичок в iphone / macworld, так что не стесняйтесь :-)

стог

iphone,uiimageview,

1

Ответов: 4


0 принят

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

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

Чтобы достичь желаемого, вам понадобятся таймеры. Взгляните на документацию 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: ;-)

Выполнение таких обновлений, как это дает основному потоку возможность обновить интерфейс.


1

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


0

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


0

Это сработало для меня, когда я хотел изменить фон 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]; 
 }
iphone, UIImageView,
Похожие вопросы
Яндекс.Метрика