Я получил эту очень простую анимацию (случай):UIView блок на основе анимации странное поведение
class ViewController: UIViewController {
var v: UIView!
var b = false
override func viewDidLoad() {
super.viewDidLoad()
self.v = UIView(frame: CGRect(x: 120, y: 250, width: 30, height: 30))
self.v.backgroundColor = .red
self.view.addSubview(self.v)
}
@IBAction func didTapButton(_ sender: UIButton) {
UIView.animate(withDuration: 3,
delay: 0,
options: [.beginFromCurrentState, .curveLinear],
animations: {
if self.b {
self.v.frame = CGRect(x: 120, y: 250, width: 30, height: 30)
} else {
self.v.frame = CGRect(x: 240, y: 250, width: 30, height: 30)
}
self.b = !self.b
},
completion: nil)
}
}
На каждом кране кнопки красный вид перемещается влево или вправо в зависимости от направления тока. Анимация должна начинаться с текущей позиции и быть линейной.
Однако, если я нажимаю кнопку, когда предыдущая анимация уже выполняется, красный вид не начинается сразу для перемещения в противоположном направлении. Он просто зависает в текущей позиции, пока предыдущая анимация заканчивается, а затем начинает двигаться. Если я изменил вариант кривой анимации от linear
до easeOut
и он работает правильно.
Я использую прошивку 10, Xcode 8.2.1
Любые идеи, почему это происходит?
Это не так, потому что, если я изменю 'alpha' вместо этого он работает отлично. Также, если я изменяю параметр анимации от 'linear' до' easeOut', он также работает так, как ожидалось. –
Можете ли вы указать значения 'alpha', когда он работает, а когда нет. Также обратите внимание на ответ от [Knight0fDragon] (http://stackoverflow.com/questions/34296002/animating-button-allowuserinteraction-not-working) – Sharath
Если я анимацию альфа-значения вместо кадра, то он работает так, как ожидалось –