Quiero poner un UICollectionView de control que muestra los pulgares horizontalmente (una sola línea, la de los pulgares). Por alguna razón el UICollectionView empujar los pulgares 44 píxeles hacia abajo, por lo que el «0» height es en realidad «44». Supongo que podría ser la adición de este espacio para considerar la barra de navegación de altura (yo supongo). Desde mi UICollectionView es sólo en parte de la pantalla, no quiero que este margen. Hay una forma de quitarlo?

InformationsquelleAutor bashan | 2013-10-16

7 Comentarios

  1. 187

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

    • Las grandes obras. Es muy extraño que esta cosa no puede ser abordado en el guión gráfico.
    • Gracias Por Compartir .. funciona como un encanto para mí.
    • Esta es la cosa más estúpida que he visto nunca! Tantas horas desperdiciadas!
    • He Pasado hoursss en ella 🙂 muchas Gracias compañero
    • Se puede hacer en el guión gráfico, hay una casilla de verificación denominada «Ajuste de Desplazamiento de la Vista de Inserciones»
    • He estado trabajando para la misma cuestión desde uno y la mitad del día. Yo estaba tratando de encontrar la razón. Pero esto funcionó para mí como un encanto. Respuesta de verdad merece upvotes. Gracias y upvoted !!!
    • he pasado horas y, finalmente, obtener esta respuesta correcta ! gracias
    • Tenga en cuenta que si usted está usando un embed segue, y su colección de controlador de vista es el controlador embebido, tienes que llamar a este método para el controlador principal, y no en el interior de su UICollectionViewController
    • Lifesafer, la pérdida de horas en este
    • Gracias, @csotiriou.
    • De Apple??? Real extraña. Se debe manejar esto mejor. Gracias por la respuesta, me salvó un montón de tiempo!
    • usted salvó mi vida hombre
    • +100 votos , thx mucho!!
    • yo tenía un tab bar controller añadido demasiado. He seleccionado por TabBarController en el guión gráfico y Desactivada Under Top Bars de Extend Edges. Yo también desactivada Adjust Scroll View Insets en tanto TabBarController y mi CollectionView y funcionó perfectamente
    • trabajó como un encanto. Gracias por publicar.
    • Adiós día de mi vida
    • De trabajo , pero ¿me pueden enviar docs explicar la cuestión
    • href=»https://developer.apple.com/reference/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin» >developer.apple.com/reference/uikit/uiviewcontroller/…
    • esta respuesta nos salvó de ser despedido! 🙂 Muchas gracias.
    • Este es obsoleta a partir de iOS 11.
    • hizo u obtener relevante ans para iOS 11 ?? también obtiene el mismo problema.

  2. 87

    Puede configurar esto en el guión también.

    Asegúrese de que ha seleccionado el ViewController, y luego desmarca la casilla de «Ajuste de Desplazamiento de la Vista de Inserciones».

    UICollectionView añade margen superior

    Yo no he probado lo que esta IB/Storyboard método no en iOS6, aunque. Con el método de código que usted necesita para comprobar que la VC responde al método:

    if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
    self.automaticallyAdjustsScrollViewInsets = NO;
    }
    
    • Gracias tio, esto me ahorra un botín de tiempo y el progreso, realmente salvos.
    • Esto funciona para el mismo problema en Swift.
    • A mí me funcionó. Upvoted !!!
  3. 16

    He encontrado que la adición de:

    self.edgesForExtendedLayout = UIRectEdgeNone;
    

    En el controlador de vista me estaba cargando la UICollectionView en resolver el problema, como yo no podía conseguir la aceptación de responder a trabajar.

    La pregunta que me he encontrado esta respuesta se puede encontrar aquí y ofrece una extremadamente profundo e interesante explicación de la diferencia entre ajusta automáticamente desplaza la vista de inserciones, extendido diseños y edge extended diseños.

    Merece la pena leer

  4. 5

    Tal vez usted puede tratar a la fuerza de este valor en 0, usando el Delegado de flujo de diseño de la colección :

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

    Modificar el valor de su relleno.

  5. 5

    Swift 3:

    Primer desea establecer el viewControllers automaticallyAdjustsScrollViewInsets a false:

    self.automaticallyAdjustsScrollViewInsets = false
    

    A continuación, usted debe ser capaz de ajustar el borde inserciones 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)
    }
    
    • thnx @josh trabajando para mí
  6. 0

    Como algunos han mencionado otros, viewController.automaticallyAdjustsScrollViewInsets ha sido en desuso desde iOS 11. Mi solución…

    Swift 4.2, Xcode 10.1, iOS 12.1:

    Por alguna razón, collectionView.contentSize.height fue apareciendo más pequeño que el resuelto altura de mi colección. En primer lugar, yo estaba usando una función de diseño de la restricción relativa a 1/2 de la superview la altura. Para solucionar este problema, he cambiado la restricción de ser relativa a la «zona segura» de la vista.

    Esto me permitió establecer la altura de la celda verticalmente llenar mi colección de la vista usando collectionView.contentSize.height:

    private func setCellSize() {
        let height: CGFloat = (collectionView.contentSize.height) /CGFloat(numberOfRows)
        let width: CGFloat = view.frame.width - CGFloat(horizontalCellMargin * 2)
    
        let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
        layout.itemSize = CGSize(width: width, height: height)
    }
    

    Antes de

    UICollectionView añade margen superior
    UICollectionView añade margen superior

    Después de

    UICollectionView añade margen superior
    UICollectionView añade margen superior

  7. -3

    Similares a @Sviatoslav respuesta, usted puede tratar el siguiente:

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

Dejar respuesta

Please enter your comment!
Please enter your name here