我在应用程序中有一个 HUD 面板,我希望能够拍摄一组图像并在面板上显示每个图像几秒钟,然后再显示下一个图像。我对 Cocoa 很陌生,并且在实现这一点时遇到了麻烦,所以欢迎一些指针。这是我目前正在尝试的:
[newShots enumerateObjectsUsingBlock:^(NSDictionary *obj, NSUInteger idx, BOOL *stop)
{
//get url
NSURL *imageUrl = [[NSURL alloc] initWithString:[obj objectForKey:@"image_url"]];;
//get image from url
NSImage *image = [[NSImage alloc] initWithContentsOfURL:imageUrl];
//set it to shot panel
[shotPanelImageView setImage:image];
//clean up
[imageUrl release];
[image release];
//set needs refresh
[shotPanelImageView setNeedsDisplay:YES];
//sleep a few before moving to next
[NSThread sleepForTimeInterval:3.0];
}];
如您所见,我只是在循环每个图像的信息,通过 URL 获取它,将其设置为视图,然后在继续之前调用线程睡眠几秒钟。问题是视图在分配时不会用新图像重绘。我认为 setNeedsDisplay:YES 会强制重绘,但只会显示集合中的第一张图像。我已经放入 NSLog() 并进行了调试,并且我确信枚举工作正常,因为我可以看到新的图像信息正在按应有的方式设置。
是否有我遗漏的东西,或者这是解决这个问题的完全错误的方法?
谢谢,
克雷格