uicollectionviewdatasource uicollectionviewcontroller tutorial example collection ios7 uicollectionview

ios7 - tutorial - uicollectionviewcontroller



UICollectionView agrega margen superior (6)

Quiero poner un control UICollectionView que muestre los pulgares horizontalmente (solo una línea de pulgares). Por alguna razón, UICollectionView empuja los pulgares 44 píxeles hacia abajo, por lo que la altura "0" es en realidad "44". Supongo que podría estar agregando este espacio para considerar la altura de la barra de navegación (supongo). Como mi UICollectionView solo está en una parte de la pantalla, no quiero este margen. ¿Hay un modo de quitarlo?


Encontré eso agregando:

self.edgesForExtendedLayout = UIRectEdgeNone;

En el controlador de vista que estaba cargando, UICollectionView resolvió el problema, ya que no pude lograr que funcionara la respuesta aceptada.

La pregunta a la que encontré esta respuesta se puede encontrar here y proporciona una explicación extremadamente profunda e interesante de la diferencia entre las inserciones de vista desplazadas ajustadas automáticamente, los diseños extendidos y el borde para diseños extendidos.

Bien vale la pena leer


Puedes configurar esto en el guión gráfico también.

Asegúrese de haber seleccionado ViewController y luego desmarque "Ajustar las configuraciones de la vista de desplazamiento".

No he probado lo que este método IB / Storyboard hace en iOS6. Con el método de código, debe verificar que el VC responda al método:

if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) { self.automaticallyAdjustsScrollViewInsets = NO; }


Similar a @Sviatoslav respuesta, puede intentar lo siguiente:

- (void) viewDidLayoutSubviews { [super viewDidLayoutSubviews]; yourCollectionView.contentOffset = CGPointMake(0, 0); }


Swift 3:

Primero, desea configurar viewControllers automaticallyAdjustsScrollViewInsets en falso:

self.automaticallyAdjustsScrollViewInsets = false

Entonces, debe poder ajustar las inserciones de borde en consecuencia:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { //top, left, bottom, right return UIEdgeInsets(top: 10, left: 0, bottom: 0, right: 0) }


Tal vez puedas intentar forzar este valor a 0 usando el diseño de flujo delegado de la vista de colección:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { return UIEdgeInsetsMake(PADDING_TOP, PADDING_LEFT, PADDING_BOTTOM, PADDING_RIGHT); }

Modifica el valor de tu relleno.


El problema puede estar en las inserciones de contenido de la vista de colección. Intenta agregar self.automaticallyAdjustsScrollViewInsets = NO; para ver el método viewDidLoad del controlador.