ios - automatic - uicollectionviewdelegateflowlayout
Cambiar el tamaño de las imágenes automáticamente en CollectionViewCell en CollectionView con diseño automático (2)
Puede usar sizeForItemAtIndexPath:
para cambiar el tamaño de la celda de vista de colección.
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
var numberOfCellInRow : Int = 3
var padding : Int = 5
var collectionCellWidth : CGFloat = (self.view.frame.size.width/CGFloat(numberOfCellInRow)) - CGFloat(padding)
return CGSize(width: collectionCellWidth , height: collectionCellWidth)
}
Puede obtener el tamaño de la celda a través de:
((UICollectionViewFlowLayout) self.collectionViewName).itemSize.height)
Puedes obtener el tamaño de la imagen a través de:
let sizeOfImage = image.size
let height = image.height
Si desea cambiar la altura, cámbiela manualmente por return CGSize(width: collectionCellWidth , height: cellheight)
Tengo una collectionView con UICollectionViewFlowLayout horizontal.
Estoy tratando de lograr:
Si la orientación de un dispositivo es vertical, el ancho de UIImageView será cualitativo para view.width y permitirá que la altura se calcule automáticamente (como suele ocurrir con el diseño automático). Y lo mismo para el modo paisaje. Ejemplo: aplicación de fotos estándar en el Iphone.
Desafortunadamente no veo cómo lograrlo con autoLayout. Establecí restricciones en UIImageView para que sea igual en tamaño a la celda. Pero parece que la venta en sí no se puede anclar a la Vista principal.
Después de leer preguntas similares, parece que las celdas deben redimensionarse mediante programación utilizando
func collectionView(collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSize(width: width, height: height)
}
Y aquí estoy atascado porque sé el ancho de la pantalla pero no sé cómo calcular la altura de forma dinámica.
Acerca de la altura de la imagen:
Tengo mi imagen declarada así:
var pageImages = [UIImage]()
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell: ImageDetailViewCell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! ImageDetailViewCell
let curr = indexPath.row
let imgName = data[albumNumber][curr]["image"]
cell.DetailImageView.image = UIImage(named: imgName!)
return cell
}
Si usa la configuración de UIImageView
tamaño de UIImageView
adecuada (por ejemplo, ajuste / relleno de aspecto), solo necesita establecer la altura de la celda en su collectionView (obtiene un puntero como uno de los parámetros del método ...sizeForItemAtIndexPath...
) altura. También debe llamar al método - layoutIfNeeded
en su celda después.