Мигает UILabel как - PullRequest
       1

Мигает UILabel как

1 голос
/ 03 сентября 2010

Я пытаюсь использовать UIImage в качестве кнопки, которая создает впечатление, что она включается, а затем снова выключается в течение примерно половины секунды. Это работает нормально, если я включаю его, но если я хочу выключить его снова, он вообще не включается. У меня там короткая петля, чтобы он не включался и не выключался так быстро, что я его не вижу, но он вообще не включается. Я пробовал с и без [flashingButton release]. Есть ли что-то, что я неправильно понимаю здесь? Могу ли я addSubview и removeFromSuperView одновременно даже с небольшой задержкой?

if (  some conditional statements in here .......) {

    UIImage *estimateButton1 = [UIImage imageNamed:@"FlashingButton.png"];
    flashingButton = [[UIImageView alloc] initWithImage:flashingButton1];
    flashingButton.frame = CGRectMake (146,8,165,30);
    [self.view addSubview:flashingButton];
    //  [flashingButton release];

    //      short loop in here to delay urning the button off   

    [self.flashingButton removeFromSuperview];

Ответы [ 2 ]

3 голосов
/ 03 сентября 2010

Рисование пользовательского интерфейса происходит только в основном цикле выполнения. Ваш звонок на addSubview добавляет flashingButton к self.view, но не рисует его. Ваш короткий цикл блокирует основной цикл выполнения, поэтому он все еще не попадает в чертежную часть. А затем вы удаляете кнопку до того, как основной цикл выполнения начинает ее рисовать.

Решение состоит в том, чтобы позволить циклу основного запуска продолжить после добавления мигающей кнопки (чтобы она отображалась), но создать таймер, который удалит эту кнопку в будущем. Для этого вы можете использовать performSelector:withObject:afterDelay:.

[self.flashingButton performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.5f];

Вы можете прочитать о циклах выполнения в " Руководство по программированию потоков " и о том, как рисовать, смотрите " Просмотреть руководство по программированию для iOS ."

0 голосов
/ 03 сентября 2010

Зацикливание в главном потоке временно приостановит программу и предотвратит прорисовку. Вместо этого используйте NSTimer.

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