ios - inside - UICollectionView, simplemente encaja la celda al ancho?
uicollectionview inside uitableviewcell (3)
Creo que necesitas echar un vistazo a
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
de UICollectionViewLayout
donde puede establecer el tamaño según la orientación y el marco actual.
De hecho, parece que simplemente tienes que hacer esto en código.
Aquí hay un simple UICollectionView en amarillo
La flecha roja establece el ancho de la celda. (TBC: haciendo clic en la celda rosa: para ''tamaño'' seleccione ''Predeterminado'', luego lo que establezca en la flecha roja se convierte en el tamaño de la celda).
Ejemplo, para un iPhone vertical, establezca un ancho de 320.
Pero esto parece una locura ... seguramente puedo establecer el ancho de la celda en función del ancho de UICollectionView ?
No hay problema en auto dimensionar la vista en sí misma.
Eso funciona bien.
Pero parece una locura que no pueda configurar el ancho de la celda para que sea "igual a la vista". Parece difícil creer que uno tiene que configurarlo manualmente, en código?
TBC En otras palabras, como señala Nikita,
-(CGSize) collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return self.view.frame.size;
}
(De hecho, también es típico que necesites esto ...)
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout*)collectionViewLayout
insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(0,0,0,0); //t,l,b,r
}
De hecho, ¿tienes que hacer eso en código? ¡No hay manera de hacer eso en Storyboard, con autolayout, o algo más?
Hay una manera simple de hacer esto. Aquí está el código rápido. Supone que desea un elemento de ancho y, en el ejemplo, mis celdas tienen 64 pts de alto, y quiero 8 puntos para los márgenes laterales, y finalmente collectionView es el nombre de su UICollectionView.
Inserte esto en viewDidLoad:
let layout = collectionView?.collectionViewLayout as! UICollectionViewFlowLayout
layout.itemSize = CGSize.init(width: (UIScreen.main.bounds.width - 16), height: 64.0)
Esto establecerá todas las celdas para predeterminar a ese tamaño. Aún puede anular celdas individuales si subclase UICollectionViewLayout o UICollectionViewFlowLayout, como se menciona en otras respuestas. Pero si simplemente desea tener más vistas de tabla como comportamiento, esto debería funcionar.