web-dev-qa-db-ja.com

swiftのアニメーションを削除

ユーザーが情報を入力するテキストフィールドがあります。また、ユーザーにテキストフィールドを指すラベル(ヒントなど)。

ユーザーがテキストフィールドを押してデータを入力したら、アニメーションを停止し、ヒントラベルを削除します。

テキストラベルに繰り返しアニメーションがあります。作成者:

override func viewDidLoad() {
    super.viewDidLoad()

    textInput.addTarget(self, action: #selector(CalculatorViewController.removeAnimation(_:)), forControlEvents: UIControlEvents.TouchDown)

     self.hintLabel.alpha = 0.0

    UIView.animateWithDuration(1.5, delay: 0, options: .Repeat
        , animations: ({
        self.hintLabel.alpha = 1.0
    }), completion: nil           
    )

その後、注釈を削除する関数を作成しました

func removeAnimation(textField: UITextField) {
    view.layer.removeAllAnimations()
    self.view.layer.removeAllAnimations()
    print("is it working?!")
}

ドキュメントに従って動作するはずです。

enter image description here

コンソールに文字列が印刷されていても、ラベルが点滅し続けます。問題はアニメーションが繰り返されることですが、この問題を解決する方法が分からないということです。

10
Almazini
//Just remove the animation from the label. It will Work

 func remove()

{
    self.hintLabel.layer.removeAllAnimations()
    self.view.layer.removeAllAnimations()
    self.view.layoutIfNeeded()

}

更新:

核に行きたいのなら、これもできます:

func nukeAllAnimations() {
    self.view.subviews.forEach({$0.layer.removeAllAnimations()})
    self.view.layer.removeAllAnimations()
    self.view.layoutIfNeeded()
}
31
Rutvik Kanbargi