好的,我的代码有问题。我想使用 imageViewers 制作某种类似于游戏的网格,但是当更改 imageViewers 如何更改图片的方法时,它只会在完成执行后更新屏幕/imageviewers,而不是在实际执行它的行时更新。我有一个带有无限循环的方法,它会在您按下按钮时更改 imageViewers 的图片。按钮调用将布尔变量更改为真的方法,因此主游戏循环通过不断检查某些变量是否为真来知道按下了什么。但是因为游戏循环永远不会结束,所以屏幕永远不会更新。有没有办法在执行期间更新屏幕上的内容?
我正在使用此代码更改 imageViewers 内容:
UIImage * white = [UIImage imageNamed: @"White.png"];
UIImage * blue = [UIImage imageNamed: @"Blue.png"];
int tagInt=1;
for (int y = 0;y<10;y++){
for (int x = 0;x<10;x++){
UIImageView *imageView;
imageView = [[UIImageView alloc] initWithImage:white]; imageView.frame =CGRectMake(x*32,y*37,32,37);
imageView.image = white;
imageView.tag=tagInt;
[self.view addSubview:imageView];
tagInt++;
}
}
for (int u = 1;u<20;u++){
[NSThread sleepForTimeInterval:(1)];
UIImageView *g = (UIImageView*)[self.view viewWithTag:u];
g.image =blue;
}
这是一个人为的例子,因为我的实际代码太长,但有同样的问题。它仅在最后一个 for 循环(此延迟/线程睡眠命令)完成后在屏幕上更新,而不是在代码行执行时更新。
编辑:如果您需要任何上下文,这是项目:https ://www.dropbox.com/s/cvefllnhgj0tp6g/Stacker.zip