0

私は、異なるセルの高さがセルごとに異なるカスタムレイアウトでUICollectionVewCellを使用しています。私はここに記載されたアプローチを使用しました https://www.raywenderlich.com/107439/uicollectionview-custom-layout-tutorial-pinterestUICollectionViewCellのSwift NSAutoresizingMaskLayoutConstraintは警告を出しますが、レイアウトはうまく動作します

私はストーリーボードにセルをセットアップしており、すべての制約はお互いに満足しているようです。コードを実行すると、セルレイアウトが正確にわかります。問題はない。

問題は、ログに、私が自分で入れた制約と矛盾しているように見えるNSAutoresizingMaskLayoutConstraintがあります。 NSAutoresizingMaskLayoutConstraintはxcodeが追加しているものです。この制約は、CollectionViewCell独自のコンテンツビューにxcodeによって自動的に設定されます(このコンテンツビューは、ビューの階層内でのみ表示され、ドキュメントのアウトラインでは表示されません)。

2017-02-19 21:54:28.999546 TestProject[6612:395125] [LayoutConstraints] Unable to simultaneously satisfy constraints. 
Probably at least one of the constraints in the following list is one you don't want. 
Try this: 
    (1) look at each constraint and try to figure out which you don't expect; 
    (2) find the code that added the unwanted constraint or constraints and fix it. 
(Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 

( ""、 ""、 ""、 ""、 ""、 ""、 "" )

制約

を破って回復を試みます

UIViewAlertForUnsatisfiableConstraintsでシンボリックブレークポイントを作成し、デバッガでこれを捕捉します。

View Hierarchy

私はかなりの数の他の人が同様の問題を抱えているが、それらの記事を以下と記載されているすべてのソリューションが制約でこのエラー/競合を取り除くに私が助けていないしようとして参照してください。私は、次しようとしたポストのいくつかは、それを固定とほぼ近づいてではなく、完全に999にその制約の優先順位を変更することである。しかし、これはその小さな空を追加するソリューションの Unable to simultaneously satisfy constraints, will attempt to recover by breaking constraint How to trap on UIViewAlertForUnsatisfiableConstraints?

一つですよく見えません。

手動で入力した制約を変更することなくこのNSAutoresizingMaskLayoutConstraint警告をどのように取り除くことができますか?

ありがとうございました。

答えて

1

これはしばらく前に実現したことがわかりましたが、私は主に将来の助けを求める人々のためにこのコメントを投稿しています。

最近、ダイナミックハイトとNSAutoresizingMaskLayoutConstraintを持つUICollectionViewCellサブクラスにいくつかの問題がありました。また、あなたが言及した他のリンクもうまく利用できませんでした。

私の場合、私は2つのサブビューを持っていました:サブビューAはsuperview.top/left/rightにピン止めされていて、サブビューBには、superview.left/right/bottomが固定されていました。私はAとB(高さ= 50と高さ= 300)の明示的な高さの値を与えていましたが、このシナリオではあなたと同じことをしていました。満足していましたが、レイアウト自体はうまくいっていました。

最後に、私はサブビューAの高さの制約を取り除き、それを適切な高さにして別の方法でレイアウトしました(私はその中にラベルを持っていました。 Aの高さを明示的に固定します)。私が必要とするレイアウトを維持することができていた間、コンソールのエラーは消えてしまった。だから私はなぜか分からないけど、私のように思えるのは、セルの上から下まで明確な高さがあるときにエラーが発生するということです。 1つまたは複数のビューが高さの制約ではなく間隔の制約によって固定されるように変更すると、よりうまくいくように見えます。

(将来的に必然的に検索している他の人のためのボーナスフォローアップ:その後、高さ制約定数を変更してサブビューBのサイズを変更しようとしましたが、これもコンソールエラーですが正しいレイアウトになりました。サブビューBの高さ制約の優先度を999に変更すると、エラーは消えました。)

+0

ありがとうございます。私はアプリをアプリストアにプッシュする必要がありました。次のバージョンで修正を試みます。 – Neeraj

関連する問題