2016-10-04 14 views
0

私はUILabelをアニメーション化しようとしていますが、最初から上から40ポイントを終了するようにビュー内で縦と横の中央に配置されています。アニメーションの中心の垂直方向の拘束を上から固定

これは複数のデバイス/画面サイズ上にあるため、私はトップの制約を使うことはできないと考えています。アイテムは必ずしも正しい場所にはなく、同様にはありませんすべてのデバイスの高さで機能する '一定の値'にすること

これについてはどのような方法が最適ですか? 2つの制約があります.1つは縦の中心に、次にもう1つはアニメーションの終わりに一番上の位置に配置し、次にこれをアニメーションで切り替えます。

これまでのところ私はちょうど私のcenterY制約のためにIBOutletを持っていると私はそうのように上書きしてみました:

labelYConstraint = NSLayoutConstraint.init(item: titleLabel, attribute:NSLayoutAttribute.centerY , relatedBy: .equal, toItem: view, attribute: NSLayoutAttribute.top, multiplier: 0, constant: 40) 

    UIView.animate(withDuration: 2.0) { 
     self.view.layoutIfNeeded() 
    } 

誰でも似た何かを達成するために管理しましたか?

+0

クラッシュが何と言っていますか? – Connor

+0

申し訳ありませんが、クラッシュがきれいになってしまったようですが、labelYConstraintを中央から上に変更するだけでアニメーションが表示されない – TommyBs

+0

新しい値に設定する前に 'labelYConstraint.active = false'を設定してください。非アクティブ化する。 – Connor

答えて

0

あなたが最初に予め設定された制約を無効にする必要があります。

labelYConstraint.active = false 
labelYConstraint = NSLayoutConstraint.init(item: titleLabel, attribute:NSLayoutAttribute.centerY , relatedBy: .equal, toItem: view, attribute: NSLayoutAttribute.top, multiplier: 0, constant: 40) 
view.addConstraint(labelYConstraint) 
関連する問題