Лучший способ заставить текст мигать в iPhone OS? - PullRequest
4 голосов
/ 06 июля 2010

Я хочу, чтобы мое текстовое поле мигало (как старые ЖК-часы).

Прямо сейчас я звоню несметному количеству NSTimers и селекторов, которые ждут, меняют альфу, ждут, затем меняют ее обратно. Даже при этом, это выглядит очень плохо, и я думаю, что мне нужно установить NSTimer для постепенного изменения альфы, но, как я слышал, они не предназначены для вещей такой точности.

Я думаю, что должен быть способ сделать это намного лучше, чем то, как я сейчас его реализую. Это похоже на взлом.

Ответы [ 4 ]

7 голосов
/ 06 июля 2010

Использование делегата анимации может сделать его менее "хакерским":

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
[myLabel setAlpha:0.0];
[UIView commitAnimations];

И тогда вы можете сделать так, чтобы didStopSelector перезапустил анимацию:

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    [self displayLabel];
}

В зависимости от animationID, выможет использовать различные действия и т. д. Использование setAnimationDelay в UIView также может пригодиться.

В UIView также есть вызов setDuration для анимаций:

[UIView setAnimationDuration:0.1];

Если вы создаете для iOS4, проверьтедокументация, поскольку вы должны использовать анимационные вызовы на основе блоков, а не делегированные.

5 голосов
/ 14 марта 2013

вы можете установить альфа метки с помощью анимации, как

чтобы скрыть ярлык с анимацией

[UIView animateWithDuration:0.2 delay:0.1 options:UIViewAnimationOptionCurveEaseOut animations:^{
        lblDistance.alpha=0;
    } completion:^(BOOL finished) {
        if (finished) {

        }
    }];

чтобы показать ярлык с анимацией

[UIView animateWithDuration:0.2 delay:0.1 options:UIViewAnimationOptionCurveEaseOut animations:^{
        lblDistance.alpha=1;
    } completion:^(BOOL finished) {
        if (finished) {

        }
    }];

это лучший способ оживить любого человека и создать мигающий ярлык ........

1 голос
/ 06 июля 2010

Я бы использовал NSTimer, но вместо того, чтобы возиться с альфа-каналами, я бы либо не рисовал текст (если это даже возможно с очень ограниченным по атрибуту SDK Apple), либо, если это невозможно, вы всегда могли бы нарисовать что-то поверх это (как прямоугольник).

Использование такого подхода к рисованию чего-либо над текстом даст лучшую производительность. Хотя некоторые (ладно, большинство) сочли бы это уродливым хаком, позвольте мне сказать следующее: «Если это выглядит правильно, то это правильно».

0 голосов
/ 06 июля 2010

NSTimers и изменение альфы - это вполне приемлемый способ сделать это - это, безусловно, то, что я делаю.Если у вас возникли проблемы, возможно, пример кода поможет нам понять, в чем проблема?

...