2017-01-11 13 views
2

Я получил эту очень простую анимацию (случай):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

Любые идеи, почему это происходит?

ответ

0

Когда анимация включена, компоненты пользовательского интерфейса не будут реагировать на новые изменения. Он будет буферизовать вход и реагировать после завершения анимации. Это не относится к версиям iOS или Xcode, но нормальное поведение.

+0

Это не так, потому что, если я изменю 'alpha' вместо этого он работает отлично. Также, если я изменяю параметр анимации от 'linear' до' easeOut', он также работает так, как ожидалось. –

+0

Можете ли вы указать значения 'alpha', когда он работает, а когда нет. Также обратите внимание на ответ от [Knight0fDragon] (http://stackoverflow.com/questions/34296002/animating-button-allowuserinteraction-not-working) – Sharath

+0

Если я анимацию альфа-значения вместо кадра, то он работает так, как ожидалось –