2015-09-12 2 views
1

Я попытался бесконечно пульсировать градиент от прозрачного до непрозрачного с использованием анимации блока UIView. Конечным результатом является то, что градиент остается при полной непрозрачности без анимации. Возможно ли даже анимировать CALayer с использованием стиля блока или я должен использовать инструкции для старой школы?Как использовать блочную анимацию для CALayer?

_pulsingLight = [CAGradientLayer layer]; 
_pulsingLight.colors = @[(id)([UIColor colorWithWhite:1.0 alpha:kPulsingLightStartAlpha].CGColor), 
         (id)([UIColor colorWithWhite:1.0 alpha:kPulsingLightStopAlpha].CGColor)]; 
_pulsingLight.opacity = 0.0; 
[self.layer insertSublayer:_pulsingLight below:_anotherView.layer]; 
[UIView animateWithDuration:kPulsingLightHalfLife 
         delay:0.0 
        options:UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse 
       animations:^{ 
        _pulsingLight.opacity = 1.0; 
       } 
       completion:nil]; 

ответ

1

UIView имеет блок-анимацию. CALayers нет. Вы должны использовать различные формы CAAnimation для анимации CALayer.

Это говорит о том, что я уверен, что вы можете внести изменения в основной базовый слой представления внутри блока анимации UIView.

CALayers, отличный от уровня поддержки представления, не может быть анимирован с анимацией блока UIView, но они поддерживают «неявную анимацию» многих свойств. Если вы изменяете анимированное свойство слоя, который не является уровнем поддержки представления, система применяет это изменение с настройками анимации по умолчанию (синхронизация и стимуляция). Вы можете использовать вызовы CATransaction, чтобы изменить настройки этих неявных анимаций или внести изменения без анимации.

 Смежные вопросы

  • Нет связанных вопросов^_^