Почему этот цикл запускается только один раз? - PullRequest
0 голосов
/ 19 июля 2011

Просто хочется, чтобы экран мигал синим / красным снова и снова в течение некоторого времени в зависимости от нечетного или четного условия, но он запускается только один раз, а не 30000 раз. Чего мне не хватает?

-(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 ]

5 голосов
/ 19 июля 2011

Вы «моргаете» 30000 раз, не возвращаясь в основную систему iOS, чтобы дать ей возможность отобразить результаты вашего за миг Вам нужно один раз мигнуть, вернуться в iOS, вернуться, снова мигать, вернуться в iOS и т. Д.

3 голосов
/ 19 июля 2011

Цикл выполняется 30000 раз, но экран обновляется только один раз.Чтобы изменения в объектах UIKit вступили в силу, вам необходимо выйти в runloop.Возможно, вы хотите настроить NSTimer и переключить цвет фона в обратном вызове.

2 голосов
/ 19 июля 2011

Если вы пытаетесь получить эффект мигания, вы можете (и, вероятно, должны) использовать Core Animation.

Я ответил на аналогичный вопрос здесь пример кода .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...