web-dev-qa-db-fra.com

Pourquoi sur Xcode 11, UICollectionViewCell change de taille dès que vous faites défiler (j'ai déjà défini la taille dans sizeForItem AtIndexPath :)?

enter image description here

J'ai collectionview à l'intérieur de la cellule tableview et j'utilise nib pour ma cellule view collection (dans laquelle j'utilise la mise en page automatique pour mon imageview et mes étiquettes et il est en mode Freeform). Je mets la taille de la cellule dans la classe tableviewcell qui gère le délégué pour collectionview à l'intérieur par cette méthode:

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

Cela fonctionne toujours, mais après Xcode 11, il ne fonctionne pas.

19
Reza.Ab

J'ai le même problème. Et ma solution est de changer le Estimate size à None dans le Xcode 11.

enter image description here

58
Anh Tuan

Vous définissez collectionview Estimer la taille sur Aucun dans Xcode 11. La raison en est que les cellules d'un UICollectionView peuvent désormais se redimensionner automatiquement avec des vues contraintes de mise en page automatique dans le canevas. Pour activer le comportement des vues de collection existantes, activez "Automatique" pour la taille estimée de la vue de collection et "Automatique" pour la taille de la cellule dans l'inspecteur de taille.

Si vous déployez avant iOS 13, vous pouvez activer les cellules de vue de collection à dimensionnement automatique en appelant performBatchUpdates(_:completion:) during viewDidLoad()

Réf: https://developer.Apple.com/documentation/xcode_release_notes/xcode_11_release_notes

10
tetrajen

Ce problème vient dans Xcode 11. Accédez à l'inspecteur d'attributs et modifiez la taille estimée à Aucun. va tout réparer.

4
Talha Rasool