UIView
Вы можете использовать методы анимации из UIView
для управления анимацией...
На этот вопрос есть несколько ответов, которые должны вы можете повторить анимацию с проверкой между каждым циклом, чтобы увидеть, должна ли анимация продолжаться или останавливаться.
Однако, учитывая, что вы хотите запустить непрерывную анимацию и прервать/остановить ее на основе какого-либо другого события, я думаю, что лучше использовать CABasicAnimation
...
CABasicAnimation
Вы можете использовать CABasicAnimation для анимации backgroundColor
UITableViewCell
.
Например, вот код, который я использовал для анимации цвета UIView
:
// UIView* _addressTypeTokenView;
// UIColor* _tokenOnColour;
// UIColor* _tokenOffColour;
CABasicAnimation* colourChange = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
colourChange.fromValue = (__bridge id)(_tokenOffColour.CGColor);
colourChange.toValue = (__bridge id)(_tokenOnColour.CGColor);
colourChange.duration = 0.6;
colourChange.delegate = self;
_addressTypeTokenView.layer.backgroundColor = _tokenOnColour.CGColor;
[_addressTypeTokenView.layer addAnimation:colourChange forKey:@"colourChangeAnimation"];
Вы захотите создать анимацию, которая повторяется вечно. (Согласно похожему вопросу по этой теме) можно использовать HUGE_VALF
для создать такую анимацию. Например.
colourChange.repeatDuration = HUGE_VALF;
После того, как вы создали CABasicAnimation
, вы добавляете его в CALayer
рассматриваемого представления вместе с ключом:
- (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key
В моем примере выше я использовал ключ @"colourChangeAnimation"
:
[_addressTypeTokenView.layer addAnimation:colourChange forKey:@"colourChangeAnimation"];
Этот ключ можно использовать позже для удалить анимацию с помощью этого метода:
- (void)removeAnimationForKey:(NSString *)key
Вам по-прежнему нужно будет регулярно проверять, действительны ли данные. Если это станет действительным, вы можете удалить анимацию, чтобы остановить эффект мигания.
Вы можете сделать эту проверку в контроллере представления с помощью таймера или, возможно, объект model обрабатывает проверку достоверности данных и использует обратный вызов делегата для связи с контроллером представления. (чтобы разделить ответственность и сохранить ваш контроллер представления более аккуратным).
Как бы вы ни обрабатывали проверку достоверности данных, подход CABasicAnimation
обеспечивает чистый способ запуска и остановки анимации.
person
Gavin Hope
schedule
11.08.2015