Ваша проблема в том, что анимация останавливается и автоматически удаляется, но фильтр задерживается с наименьшим применением размытия.
Что вы хотите сделать, это удалить фильтр размытия после завершения анимации. Вам необходимо добавить делегат к экземпляру CABasicAnimation
и реализовать метод -[id<CAAnimationDelegate> animationDidStop:finished:]
.
Если вы разрешите self
быть делегатом в этом случае, это должно быть довольно просто, добавьте эту строку перед добавлением анимации в ваш слой:
blurAnimation.delegate = self;
И обратный вызов одинаково прост:
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag {
[[self layer] setFilters:nil];
}