2017-11-09 7 views
0

viewController用のスターウォーズスタイルのスクロールテキストを作成しようとしています。SWIFT:アニメーションがスピードを変更します。私は望ましくありません。

私は次のコードを持っている:それは1つの事を除いて完璧に動作

override func viewDidAppear(_ animated: Bool) { 

    UIView.animate(withDuration: 60.0, animations: { 
     let width = self.scrollingTextLabel.frame.width 
     let height = self.scrollingTextLabel.frame.height 
     self.scrollingTextLabel.frame = CGRect(x: 5, y: (180 - height), width: width, height: height) 
    }, completion:{ _ in 
     self.buttonTextLabel.text = "Play" 
    }) 

} 

を、それがスピードアップし、遅くなります。つまり、途中で読むのは難しいです。速度を一定にする方法はありますか?アニメーションを作成するアニメーションのオプションで.curveLinear

答えて

2

パスは、一定の速度を持っている:

UIView.animate(withDuration: 60.0, delay: 0.0, options: .curveLinear, animations: { 
    let width = self.scrollingTextLabel.frame.width 
    let height = self.scrollingTextLabel.frame.height 
    self.scrollingTextLabel.frame = CGRect(x: 5, y: (180 - height), width: width, height: height) 
}, completion:{ _ in 
    self.buttonTextLabel.text = "Play" 
}) 
+2

これが正しい答えです。 (投票された。)背景:アニメーションは異なるタイミング曲線を使用します。デフォルトでは、アニメーションは「イージーイン、イージーアウト」のタイミングを使用します。つまり、アニメーションは0スピードで開始し、フルスピードに加速し、中間部分で一定速度を使用し、最後に停止します。アニメーションのタイミングカーブを変更するには、 'animate(withDuration:delay:options:animations:completion:)'のようなoptionsパラメータをとり、オプション値 'を渡すanimate()の形式の1つを使用する必要があります。 curveLinear' –

+1

答えと説明の両方に感謝します。本当に素晴らしい! –

関連する問題