web-dev-qa-db-ja.com

Xcode Interface Builder9.1コレクションビューセルの「予想される高さ」が小さすぎる

最近、私は解決できなかったInterfaceBuilderの問題に遭遇しました。 UICollectionViewControllerを使用していますが、セルを追加するとすぐにオレンジ色の長方形が表示されます(自動レイアウトの更新を示します)。フレーム/セルを更新しても何も変わりません。オレンジ色のマーキングに関連する警告には、「予想:高さ= Y、実際:高さ= X」と表示されます。ここで、Yは常に正確にX-100。つまり、カスタムセルの高さを193に設定すると、「期待値:高さ= 93」と表示されます。これは、どのサイズを入力しても発生します。

これに伴う問題は、サブビューとその制約に多くの問題があることです。たとえば、セルと同じ高さを維持するように制約付きのサブビューを追加すると、セルは193であるはずですが、93(予想される高さ)として表示されます。レイアウトが不可能になります。

同じ問題で、新しいセルを追加してみました。私はすべてのサブビューを削除して、それらを再度追加しようとしましたが、何もしませんでした。

どんなアイデアでも大歓迎です。

どうもありがとうございました!

16
Dr. Cashberg

これで問題が解決したかどうかはわかりませんが、次の手順を実行すると、警告と問題は解消されました。

Interface BuilderでCollectionViewControllerを選択し、サイズをフリーフォームに設定し、高さを大きくして、すべてのテンプレートセルを表示するのに十分な大きさにします。 (さらに、ビューを更新する可能性があります)。それは私にとって問題を解決しました。

9
Dr. Cashberg

解決策が見つかりました! (Xcode 9.2)

このバグは、ストーリーボードのContainer ViewUICollectionViewControllerを埋め込もうとした場合にのみ発生するようです。 回避策は、制約を設定しているときにセグエを削除し、制約が適切に設定されたらセグエを再度追加することです。

また、UICollectionViewControllerサイズをFreeformに設定するとバグの原因になる可能性があると思います。その場合は、サイズを変更する前に制約を設定してみてください。

お役に立てれば !

13
AnthoPak

私の場合、コレクションビューコントローラーを使用して2つのコレクションビューセルを追加しました。ビューコントローラーを自由形式に設定するだけでは役に立ちません。警告を取り除くには、サイズを更新する必要があります。

コレクションビューのセルフレームを更新しても、役に立ちません。警告はその長さを継続的に変更します。

Get rid of story board warning

コレクションビューのセルサイズをプログラムで設定し、期待どおりに機能するため、警告を考慮せずに作業しようとしました。

3
Sujananth

これはInterfaceBuilderの一般的なバグです。正確な原因はわかりませんが、正確なサイズではない配置ビュー内にコレクションビューを配置することと関係があると思います。それらをスクロールビュー、スタックビュー、コンテナビューに配置したときに見ました。

簡単な修正がありますが、これはIBのバグであり、ハッキングするのではなくApple)で修正する必要があると思います。解決策(少なくとも私にとっては、マイレージは異なる場合があります) !)コレクションビューを通常のUIView内に配置し、そのエッジをそれに固定してから、その親ビューを、必要なすべての制約を使用してコレクションビューが必要な位置に配置します。

私は通常、実行時に自動レイアウトの問題が実際にはなかったことを発見しました。そのため、これは純粋にInterfaceBuilderのバグであると私は信じています。

1
Ash

SBでcollectionViewControllerを削除してから新しいものを作成すると、問題が解消されるのは奇妙なバグだと思います。

1
Jiang Lun