Я создаю сегодняшнее расширение в iOS. Я пытаюсь анимировать изменение значения в UISlider, добавленном в сегодняшнее расширение. Анимация должна продолжаться от начального значения до конечного значения.
Я пытался сделать это двумя способами: Первая анимация UIView.
func updateSliderView(beginState:Float, duration: NSTimeInterval) {
sliderView.hidden = false
sliderView.setValue(beginState, animated: false)
UIView.animateWithDuration(duration) { () -> Void in
self.sliderView.setValue(1, animated: true)
}
}
Во-вторых, с базовой анимацией.
func updateSliderView(beginState:Float, duration: NSTimeInterval) {
sliderView.hidden = false
guard let _ = sliderView.layer.animationForKey("slider.animation.value") else {
let animation = CABasicAnimation(keyPath: "value")
animation.fromValue = beginState
animation.toValue = 1
animation.removedOnCompletion = true
sliderView.layer.addAnimation(animation, forKey: "slider.animation.value")
return
}
}
Я делаю это с новым XCode 7.0.1 с целью iOS 8.1 В обоих случаях результат заканчивается без анимации. UISlider отключил взаимодействие с пользователем. Я использую UISluder, потому что у меня есть настраиваемая графика для минимальной и максимальной дорожки ползунка и для бегунка ползунка.
Я сделал третий тест
sliderView.setValue(beginState, animated: false)
CATransaction.begin()
CATransaction.setAnimationDuration(duration)
sliderView.setValue(1, animated: true)
CATransaction.commit()
это не сработает: /
Резюме: работает только анимация UIView. Он анимируется, но нарушает мою обычную графику для UISlider и не устанавливает начальное значение для слайдера.
Как я могу анимировать изменение значения UISlider в расширении Todays ??