为什么这个循环只运行一次?

时间:2011-07-19 00:11:37

标签: objective-c loops

只是希望屏幕根据奇数或偶数条件反复闪烁蓝色/红色一段时间,但它只运行一次,而不是30,000次。我错过了什么?

-(IBAction) changeBackgroundColor:(id)sender
{
    for (int y = 0; y < 30000; y++)
    {

    if(y % 2)
        {
            self.view.backgroundColor = [UIColor blueColor];
            colorView.backgroundColor = [UIColor redColor];  

        } else {

            self.view.backgroundColor = [UIColor redColor];
            colorView.backgroundColor = [UIColor blueColor];   
        }
    }
}

3 个答案:

答案 0 :(得分:5)

你正在“闪烁”30,000次而没有返回iOS主系统,让它有机会显示你每次闪烁的结果。您需要闪烁一次,返回iOS,返回,再次闪烁,返回iOS等等。

答案 1 :(得分:3)

循环运行30000次,但屏幕只更新一次。您需要退出runloop才能使UIKit对象的更改生效。您可能想要设置NSTimer并在回调中切换背景颜色。

答案 2 :(得分:2)

如果你试图获得闪烁效果,你可以(也可能应该)使用Core Animation。

我在这里用example code回答了类似的问题。