ストーリーボード上の任意のオブジェクトに制約を追加するときはいつでも、そのオブジェクトのフレームはautolayoutエンジンによって維持されます。これは私が推測する主要な設計原理です。この場合、単純に行うことができるのは、コード内でその制約を更新および更新する必要のある制約のコンセントを作成することだけです。あなたの理解のために私はスクリーンショットを添付しています。
次のように今制約コンセントを行った後、それは次のように見なければなりません。
@IBOutlet weak var containerViewHeight: NSLayoutConstraint!
ここで高さを更新するには、1つのことを行うだけです。私の意見で
containerViewHeight.constant = 0
このアップデートはviewDidLoad
が、その後呼び出されるときのiOSのレイアウトが正常に適用されないため、その後の内部viewDidLayoutSubviews
を更新してくださいviewDidLoad
またはviewWillAppear
内部の作業をされていない場合。私が何をするか私の場合は
がある -
override func viewDidLayoutSubviews() { //This ensures all the layout has been applied properly.
super.viewDidLayoutSubviews()
containerViewHeight.constant = 0
}
注: - あなたは次のようにのようなUIView
アニメーションブロック内でこの制約更新プログラムを適用することができ、レイアウトの変更中にいくつかの素晴らしいアニメーション効果を達成するために。しかし、効果を確認するために、覚えてきれいにあなたはどんな間違いのために後viewDidAppear
など
UIView.animateWithDuration(1.0, delay: 0.2, usingSpringWithDamping: 8.0, initialSpringVelocity: 1.0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
containerViewHeight.constant = 0
self.view.layoutIfNeeded()
}, completion: nil)
のように適切に申し訳ありませんがビューを提示した後、これを呼び出す必要があります。 更新/編集は大歓迎です。
これが役に立った。ありがとう
赤いビューとtableViewに与えた他の制約を表示できます –
redViewの高さはビューの高さに等しいですか?そして、あなたはredViewの高さを0に変更していますか? –