tutorial reusable example didselectitematindexpath collection ios swift uicollectionview uicollectionviewcell

ios - reusable - ¿Cómo cambiar el tamaño de UICollectionViewCell mediante programación en Swift?



uicollectionview swift 4 (5)

si usas el código de Gaurav Rami abajo

let cellSize = CGSize(width:80 , height:80) let layout = UICollectionViewFlowLayout() layout.scrollDirection = .vertical //.horizontal layout.itemSize = cellSize layout.sectionInset = UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1) layout.minimumLineSpacing = 1.0 layout.minimumInteritemSpacing = 1.0 myCollectionView.setCollectionViewLayout(layout, animated: true)

y obtenga este mensaje: " Hacer una instantánea de una vista que no se ha representado arroja resultados en una instantánea vacía. Asegúrese de que su vista se haya renderizado al menos una vez antes de realizar instantáneas o instantáneas después de las actualizaciones de la pantalla " .

myCollectionView.setCollectionViewLayout(layout, animated: false)

entonces el mensaje desaparecerá

Tengo un UICollectionView con un segmented control para cambiar entre los datos. Pero, ¿cómo cambio las propiedades de tamaño de UICollectionViewCell programática ? luego puedo personalizar cada estilo de forma apropiada para cada tipo de datos.

Por ejemplo, cambie el ancho a 520 puntos y la altura a 100. Soy nuevo en el desarrollo de iOS y tengo experiencia con CSS: /

Sé cómo hacerlo en Xcode (obviamente) pero no conozco los métodos correctos para cambiarlo rápidamente. Cualquier idea o comentario es muy apreciado (Y)


Swift 3

No se invocarán los métodos de la respuesta @ sumit-oberoi si está utilizando Swift 3. Para que funcione, realice estos ajustes:

  1. Conforme al protocolo UICollectionViewDelegateFlowLayout .

  2. Implementa estos métodos:

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { return 1.0 } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { return 1.0 }

Observe los cambios:

  1. agregar _ antes de collectionView en el nombre del método
  2. NSIndexPath cambia a IndexPath

Swift 3

override func viewDidLoad() { super.viewDidLoad() let cellSize = CGSize(width:80 , height:80) let layout = UICollectionViewFlowLayout() layout.scrollDirection = .vertical //.horizontal layout.itemSize = cellSize layout.sectionInset = UIEdgeInsets(top: 1, left: 1, bottom: 1, right: 1) layout.minimumLineSpacing = 1.0 layout.minimumInteritemSpacing = 1.0 myCollectionView.setCollectionViewLayout(layout, animated: true) myCollectionView.reloadData() }


//Use for size func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { } //Use for interspacing func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat { return 1.0 } func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat { return 1.0 }

// Para swift 3

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { return 1.0 } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { return 1.0 }


first Conform protocol the UICollectionViewDelegateFlowLayout set width and height UICollectionViewCell UIcollectionViewCell Hight = 300; UIcollectionViewCell Width = 380; func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout,sizeForItemAt indexPath: IndexPath) -> CGSize { return CGSize(width: CGFloat((380)), height: CGFloat(300)) }