我有一个相当基本的问题。我的屏幕上有几(5)个UIImageView图像。当我单击一个按钮时,我想要将每个图像更改为其他图像。我还想在每个图像发生变化时播放声音。
所以我基本上想要随着每个图像的变化而发出滴答声。
问题是,出于某种原因,如果我有5张图片,
声音首先会播放5次,然后图像会发生变化。
这就像只有当控制权返回给用户进行输入时,图像才会刷新。
当我告诉它要显示什么图像时,我如何“强制”它刷新图像呢?
我刚接触iphone/macworld,所以别对我太客气:-)
瑞克
发布于 2009-06-17 14:09:31
它就像图像只有在控制权返回给用户进行输入时才会刷新。
这就是发生的事情。UI是在主线程上更新的,所以在代码运行时不会发生更新。
为了实现你想要的,你需要计时器。请看一下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:;-)
像这样运行更新给了主线程一个更新UI的机会。
发布于 2010-12-25 11:40:30
如果您正在寻找一种定期刷新UIImageView的方法,您可以参考以下内容:http://www.shanison.com/2010/12/25/uiimageview-load-remote-image/
发布于 2009-06-17 14:07:05
听起来你很可能是在异步播放声音的同时从磁盘或网络上加载图像。也许你正在和UIImage +imageWithContentsOfURL:一起使用AudioServicesPlaySystemSound?实际的图像加载和声音播放代码在这里最有用。
https://stackoverflow.com/questions/1006866
复制相似问题