web-dev-qa-db-ja.com

Xcode 11で、スクロールするとすぐにUICollectionViewCellのサイズが変更されるのはなぜですか(sizeForItem AtIndexPath:でサイズを既に設定しています)。

enter image description here

Tableviewセル内にcollectionviewがあり、コレクションビューセルにnibを使用しています(この場合、イメージビューとラベルに自動レイアウトを使用し、フリーフォームモードになっています)。このメソッドでコレクションビューのデリゲートを処理するtableviewcellクラスでセルサイズを設定しています。

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: 200, height :150)        
    }

常に機能しますが、Xcode 11以降では機能しません。

19
Reza.Ab

私は同じ問題を抱えています。そして私の解決策は、Xcode 11のEstimate sizeNoneに変更することです。

enter image description here

58
Anh Tuan

XcodeでcollectionviewEstimate sizeNoneに設定します11.これの理由は、UICollectionViewのセルが、キャンバスの自動レイアウト制約ビューでセルフサイズできるようになったためです。既存のコレクションビューの動作にオプトインするには、コレクションビューの推定サイズに対して「自動」を有効にし、サイズインスペクターからセルのサイズに対して「自動」を有効にします。

IOS 13より前にデプロイする場合は、performBatchUpdates(_:completion:) during viewDidLoad()を呼び出すことで、セルフサイズのコレクションビューセルをアクティブ化できます。

参照: https://developer.Apple.com/documentation/xcode_release_notes/xcode_11_release_notes

10
tetrajen

この問題はXcode 11で発生します。属性インスペクターに移動して、estimateSizeをNoneに変更します。すべてを修正します。

4
Talha Rasool