Я пытаюсь сделать очень базовую анимацию для UIButton
. Целью является поворот слоя на 180 градусов. Вот мой код анимации, который вызывается из beginTrackingWithTouch
:CABasicAnimation duration & keep position position
private func rotateButton() {
let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
rotationAnimation.timingFunction = CAMediaTimingFunction(name: "easeIn")
rotationAnimation.toValue = M_PI
rotationAnimation.duration = CollapseButton.kCollapseButtonAnimationDuration
rotationAnimation.repeatCount = 1
rotationAnimation.cumulative = true
layer.addAnimation(rotationAnimation, forKey: "rotationAnimation")
}
Теперь я хотел бы добавить, рушится вид анимации при нажатии этой кнопки. В моей ВК:
__weak __typeof(self) weakSelf = self;
[UIView animateWithDuration:CollapseButton.kCollapseButtonAnimationDuration animations:^{
CGRect currentFrame = weakSelf.frame;
currentFrame.size.height = 20;
weakSelf.frame = currentFrame;
}];
У меня 2 вопроса:
После нажатия заканчивает свою анимацию она сбрасывает позицию слоя. Таким образом, если стрелка показывала верхнюю часть, она анимировалась, чтобы показать вниз и, наконец, сбрасывается вверх. Как сохранить ориентацию слоя?
Как вы можете видеть, продолжительность анимации и функции синхронизации одинаковы. По этой причине я не могу понять, что UIView оживляет гораздо медленнее. Есть идеи?