En un iPhone 6 Plus, las celdas de la vista de colección están bien, pero cuando pruebo en otro tamaño de dispositivo como el iPhone 5, me bombardean con "

017-06-15 01: 59: 25.744 HyperTest [3865: 8825385] El comportamiento de UICollectionViewFlowLayout no está definido porque: 2017-06-15 01: 59: 25.744 HyperTest [3865: 8825385] el ancho del elemento debe ser menor que el ancho de UICollectionView menos los valores de las inserciones de sección izquierda y derecha, menos los valores de las inserciones de contenido izquierda y derecha. 2017-06-15 01: 59: 25.745 HyperTest [3865: 8825385] La instancia de UICollectionViewFlowLayout relevante es, y está adjunta a; capa =; contentOffset: {0, 0}; contentSize: {414, 219}> diseño de vista de colección:. 2017-06-15 01: 59: 25.745 HyperTest [3865: 8825385] Cree un punto de interrupción simbólico en UICollectionViewFlowLayoutBreakForInvalidSizes para detectar esto en el depurador.

Especialmente cuando hago esto:

let layout = billFeedCollectionView.collectionViewLayout as? UICollectionViewFlowLayout // casting is required because UICollectionViewLayout doesn't offer header pin. It's feature of UICollectionViewFlowLayout
    layout?.sectionHeadersPinToVisibleBounds = true
    layout?.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize

De todos modos, puedo resolver este problema? Necesito asegurarme de que la celda escala y se adapta a todos los dispositivos.

5
Jevon Cowell 15 jun. 2017 a las 09:04

3 respuestas

La mejor respuesta

Al confirmar UICollectionViewDelegate de tu clase. El método delegado sizeForItemAtIndexPath llamará desde UICollectionViewDelegateFlowLayout y esto llamará a su clase ahora puede devolver el tamaño de UICollectionViewCell.

Esto funciona para mí

método:

collectionView.delegate = self

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
     return CGSizeMake(collectionView.frame.size.width, collectionView.frame.size.height)
}
3
Salman Ghumsani 15 jun. 2017 a las 06:56
 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {

        let cellsize = CGSize(width: (CollectionView.bounds.size.width/2) - 12, height:(CollectionView.bounds.size.height/3) - 20)



        return cellsize
    }

aquí CollectionView es la salida de UICollectionView

0
Amul4608 16 jun. 2017 a las 05:58

También es posible que cuando tenga un collectionView en un UITableViewCell, esta celda cambie el tamaño de la altura de collectionView a 0.

En mi caso, collectionView muestra una matriz de UIImageView para mostrar una galería de imágenes en cada celda. Si se supone que la celda no muestra ninguna imagen (texto sin imagen, por ejemplo), el collectionView está oculto.

El collectionView, si se coloca dentro de un StackView puede necesitar una restricción de altura y para evitar conflictos, es posible que deba establecerlo en la prioridad 999.

Luego, cuando oculte el collectionView, en realidad intentará establecer la altura en 0. El collectionView todavía puede contener imágenes y eso provocará el error.

SOLUCIÓN : vacíe su datasource y vuelva a cargar el collectionView cuando configure su celda.

0
Mikael 6 jun. 2019 a las 07:45