私はUIScrollViewを持っています。その中には、ScrollViewのContentSizeを定義するUIViewがあります。 ContentViewの内部には、すべて同じ幅(最大幅)のビューがあり、すべてがSuperview(UIScrollViewの上でさえ)に比例する高さを持っています。 セットアップが完全に機能し、スクロールが機能します。autolayout NSLayoutConstraintsを有効/無効にする
ここでは、表示されるコンテンツがない場合、これらのUIViewの1つを非表示にしたいので、残りの空白を埋めるように他のビューのサイズを変更します。
私は、その特定のUIViewの高さの制約をSuperviewに対して0.3の乗数で設定しました。 正確に同じUIViewの2番目の高さ制約を0.01の乗数で完全に同じSuperViewに追加しましたが、実行時に影響を与えないようにします。 (私は状況をテストしました。もし私が0.3の乗数を低い優先度に、0.01の乗数を高い優先度に置くと、すべてが完全にサイズ変更されます。
は今、私は私のヘッダファイル内の接続を持つ2つのアウトレットを作成し、ここで私は変更をしたいとき、私が使用するコードです:
//DescriptionViewNormalConstraint is the 0.3 height one, with 1000 priority
descriptionViewNormalConstraint.active = NO;
//DescriptionViewInvisibleConstraint is the 0.01 height one, with 500 priority
descriptionViewInvisibleConstraint.active = YES;
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
しかし、これは動作しません。実際、それは何も変わりません。 私はここで何が欠けていますか?
doens'tは何を意味しますか? 'descriptionViewNormalConstraint'がアクティブのままであることを意味しますか? – ddb
はい、もう一方の制約は機能しません。あるいは、それは有効になっているかもしれませんが、自動レイアウトは "リフレッシュ"されません。 –
これらの制約を適用した特定のビューに対して 'setNeedsLayout'と' layoutIfNeeded'を呼び出そうとしましたか? – ddb