Как сделать мигание (или высвечивание) курсором на iPhone?

  • Усовершенствованный Windows Debugging Hewardt и Pravat (лучше всего для общего материала Win32)
  • приложения.Net 2.0 Отладки John Robbins (если Вам нужен SOS для.Net)
  • NT отладка блога (довольно низкий уровень, но они только что отправили хороший набор ссылок .
18
задан Ashwini Shahapurkar 24 February 2014 в 07:43
поделиться

3 ответа

На делегате:

- (void)blinkAnimation:(NSString *)animationId finished:(BOOL)finished target:(UIView *)target
{
    if (shouldContinueBlinking) {
        [UIView beginAnimations:animationId context:target];
        [UIView setAnimationDuration:0.5f];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDidStopSelector:@selector(blinkAnimation:finished:target:)];
        if ([target alpha] == 1.0f)
            [target setAlpha:0.0f];
        else
            [target setAlpha:1.0f];
        [UIView commitAnimations];
    }
}

И для запуска анимации:

shouldContinueBlinking = YES;
[self blinkAnimation:@"blinkAnimation" finished:YES target:cursorView];

Также убедитесь, что в вашем классе есть переменная экземпляра shouldContinueBlinking

16
ответ дан 30 November 2019 в 05:53
поделиться

Выполните основной способ анимации:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
[animation setFromValue:[NSNumber numberWithFloat:1.0]];
[animation setToValue:[NSNumber numberWithFloat:0.0]];
[animation setDuration:0.5f];
[animation setTimingFunction:[CAMediaTimingFunction
              functionWithName:kCAMediaTimingFunctionLinear]];
[animation setAutoreverses:YES];
[animation setRepeatCount:20000];
[[view layer] addAnimation:animation forKey:@"opacity"];

Где view - это UIView, который вы хотите мигнуть. Core Animation делает это очень удобным, потому что он автоматически меняет анимацию для вас. Помните, что ваша полная продолжительность вдвое больше, чем вы установили в поле продолжительности, потому что указанное вами значение применяется к прямому направлению. Если вы хотите, чтобы вся анимация выполнялась (вперед и назад) с указанной продолжительностью, разделите продолжительность пополам.

47
ответ дан 30 November 2019 в 05:53
поделиться

Скорее всего, вы блокируете основной цикл событий и, таким образом, блокируете анимацию, когда пытаетесь анимировать только по окончании.

Вместо этого установите таймер, который срабатывает после 1 / 2 секунды, которая запускает следующую анимацию. Этот таймер можно сбросить по окончании предыдущей анимации, тем самым уменьшив нагрузку и сделав частоту мигания более регулярной (но вам придется выяснить, что наиболее подходит).

См. Документацию класса NSTimer.

Обратите внимание, что любая подобная постоянная анимация разрядит батарею. Во всяком случае, не большой, но ... все же ...

0
ответ дан 30 November 2019 в 05:53
поделиться