一个经常回答的问题,我很担心,但我对这个问题一无所知。
在我的视图控制器中,我有以下方法在两个图像之间前后切换,共5次
- (IBAction)cycle{
BOOL select1;
select1=YES;
UIImage *image1 = [UIImage imageNamed:@"image1.png"];
UIImage *image2 = [UIImage imageNamed:@"image2.png"];
for (int i=0; i<5; i++) {
if (select1){
[imageview setImage:image1];
} else {
[imageview setImage:image2];
}
[NSThread sleepForTimeInterval:1.0];
[imageview setNeedsDisplay];
}
}
问题是setNeedsDisplay消息在循环中不起作用,视图仅在方法退出时更新。
我能在这做什么吗?方法是否可行,或者我完全走错了轨道。这是一个非常多的测试程序(我是这种语言的新手)但是以编程方式控制这样的东西会很有用。下一步应用程序将实现图片更改之间随机更改的时间。
有人可以帮我吗?
答案 0 :(得分:1)
错误的曲目。调用
[NSThread sleepForTimeInterval:1.0];
只是试图让主线程处于睡眠状态。问题是这是实际绘图的线程。你需要结束你正在做的事情并将控制bakc提供给NS运行时,以便它可以更新gui元素。
尝试使用NSTimer创建计划的计时器。让它重复你想要的时间间隔。您需要做的就是设置图像:
if (select1){
[imageview setImage:image1];
} else {
[imageview setImage:image2];
}
没有必要
[imageview setNeedsDisplay];
由于imageview将为自己处理。