UICollectionView añade margen superior


Quiero poner un control UICollectionView que muestre los pulgares horizontalmente (solo una línea de pulgares). Por alguna razón, el 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 (solo asumo). Dado que mi UICollectionView está solo en una parte de la pantalla, no quiero este margen. ¿Hay alguna manera de eliminarlo?

Author: bashan, 2013-10-16

6 answers

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

 186
Author: Sviatoslav Yakymiv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-16 19:08:36

También puede establecer esto en el guion gráfico.

Asegúrese de haber seleccionado ViewController, y luego desmarque "Ajustar inserciones de vista de desplazamiento".

introduzca la descripción de la imagen aquí

No he probado lo que este método IB/Storyboard hace en iOS6. Con el método code es necesario comprobar que el VC responde al método:

if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
self.automaticallyAdjustsScrollViewInsets = NO;
}
 87
Author: siburb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-14 11:54:55

Encontré que añadiendo:

self.edgesForExtendedLayout = UIRectEdgeNone;

En el controlador de vista estaba cargando el UICollectionView en solucionado el problema ya que no podía conseguir que la respuesta aceptada funcionara.

La pregunta a la que encontré esta respuesta se puede encontrar aquí y proporciona una explicación extremadamente detallada e interesante de la diferencia entre inserciones de vista de desplazamiento ajustadas automáticamente, diseños extendidos y borde para diseños extendidos.

Bien vale la pena leerlo

 16
Author: simon_smiley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:47

Tal vez pueda intentar forzar este valor en 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.

 5
Author: Jordan Montel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-16 18:57:17

Swift 3:

Primero desea establecer el ViewController automaticallyAdjustsScrollViewInsets en false:

self.automaticallyAdjustsScrollViewInsets = false

Entonces, usted debe ser capaz de 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)
}
 3
Author: Josh O'Connor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-27 04:24:11

Similar a la respuesta de @Sviatoslav, puedes intentar lo siguiente:

- (void) viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    yourCollectionView.contentOffset = CGPointMake(0, 0);
}
 -3
Author: liviucmg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-02 00:30:05