0

私はかなり正直なレイアウトだと思ったものでUITableViewCellを持っています。主なコンテンツはUIStackView(水平)です。私はUIImageViewと2つのUILabelsを持っています。 UIImageViewには2つの制約があります。 1つはアスペクト比が1:1で正方形になり、もう1つは高さの制約で55ポイントになります。 UIStackViewは、すべてのセルcontentViewに固定されています。iOS 10の四角形StackviewのUIIMageViewが隠されたときにAutolayoutを破る

UIImageViewで表示するUIImageがない場合は、単にimageView.isHidden = trueを呼び出し、UIStackViewはイメージを非表示にします。同時に、コンソール上で私はAutoLayoutの崩壊を見る。それは、0の幅と共に55の高さを満たすことができないことを伝えています。

アスペクト比のために、UIImageViewは55の幅をも持ちたいからです。しかし、デバイス自体に私は変わった不具合は見られません。それは私がそれを期待するように正確に動作します。

そこで質問は

これは悪いことだとどのように私は、コードの最低額でこれを解決するのですか?

ところで、私は動的な高さセルフサイジングUITableViewを使用して、AutoLayoutが自分のセルの高さを決定させるようにしています。 UIImageViewがセルの唯一のコンテンツである場合があります。

答えて

0

これはバグではありません。StackView配列に配置された制約を追加します。あなたのケースでは、imageViewあなたのビューの隠しを呼び出すとき。 stackViewは、高さConstraintを0に設定しようとしましたが、追加したHeight制約はstackViewによって追加されたHeight制約と競合します。

あなたはそれが矛盾する問題に

+0

おかげで多くのことを修正する1000未満のものに高さ制約の優先順位を変更することができます!サブビューのisHiddenプロパティを設定するときに幅または高さを設定するためのUIStackView固有の「もの」かどうかを知っていますか(これはUIStackViewの向きに依存していると思います)、またはこれはAutoLayoutの仕組みの一般的なものですか? – xxtesaxx

+0

いいえ私はそれがstackViewの向きと何かを持っているとは思わない。 iOS 10以降では、高さ制約を優先度を変更せずにiOS 9でプロジェクトを実行しようとすると、高さ制約を0に変更するという新しいコンセプトが導入されました。制約エラーは発生しませんが、iOS 10ではエラーが発生します –

関連する問題