He estado construyendo en iOS 7 por un tiempo ahora, pero todavía tengo que conseguir esta solucionado, tengo una serie de puntos de vista con el diseño automático habilitado que se crearon en el Guión y se muestran con un estándar de UINavigationController. La mayoría están bien, pero los basados en UICollectionView siempre se ponen a sí mismos bajo la barra de navegación, a menos que establezca la translucidez NO. He probado el edgesExtended truco, pero que no parece resolverlo, yo no necesariamente importa tener la translucidez fuera, pero me gustaría resolver más limpio.

5 Comentarios

  1. 34

    He tenido este problema antes, acaba de establecer el borde insents de la vista de colección con un margen superior:

     [self.myCollectionVC.collectionView setContentInset:UIEdgeInsetsMake(topMargin, 0, 0, 0)];

    Donde topMargin es el tamaño de la barra de navegación, o en cualquier punto en que desee la colección para iniciar el desplazamiento.

    De esta manera, tu colección va a iniciar el desplazamiento justo debajo de la barra de navegación, y, al mismo tiempo que se llene toda la pantalla y verá que si su barra de navegación transparente.

    • Perfecto, gracias. Tuve la sensación de que sería algo a lo largo de esas líneas, pero no podía encontrar ninguna información sobre el mismo, especialmente en lo que he probado cambiando el tamaño de la UICollectionView manualmente.
    • topMargin también debe tener en cuenta la altura de la barra de estado (20 pts)
    • Muchas gracias. Este trabajo para mí..
  2. 45

    FYI si su UICollectionView es la raíz de ver en el controlador de vista de la jerarquía y su controlador de vista ha automaticallyAdjustsScrollViewInsets a » YES » (esta es la opción predeterminada), la contentInset debe actualizar de forma automática.

    Sin embargo, el scrollview del contentInset sólo se actualiza automáticamente si el scrollview (o en formato tableview/collectionview/webview por cierto) es la primera ver en su controlador de vista de la jerarquía.

    Yo suelo añadir un UIImageView primera vez en mi jerarquía con el fin de tener una imagen de fondo. Si usted hace esto, usted tiene que configurar manualmente el borde de las inserciones de la scrollview en viewDidLayoutSubviews:

    - (void) viewDidLayoutSubviews {
        [super viewDidLayoutSubviews];
        CGFloat top = self.topLayoutGuide.length;
        CGFloat bottom = self.bottomLayoutGuide.length;
        UIEdgeInsets newInsets = UIEdgeInsetsMake(top, 0, bottom, 0);
        self.collectionView.contentInset = newInsets;
    
    }
    • tu comentario acerca de como la primera vista de la jerarquía es crucial – que hizo una gran diferencia en mi caso
    • Sabiendo que no es manejado automáticamente por el punto de vista de los controladores lugar en la jerarquía es un buen poco de conocimiento adicional… es bueno saber que no es algo que yo he hecho mal! Gracias.
    • Usted debe llamar a [super viewDidLayoutSubviews] en algún lugar de esta función
  3. 5

    He tenido este problema después de que ios 11, acaba de establecer la contentInsetAdjustmentBehavior de UICollectionView a nunca:

    self.collectionView.contentInsetAdjustmentBehavior = .never
  4. 2

    Estoy usando swift y xcode 7.3.1. Lo resuelto por la que va a la placa de la historia y de la selección de mi Controlador de Navegación y, a continuación, desactivar «Extender los Bordes» «en Virtud de la parte Superior de los Bardos».

  5. 0
    -(void) viewDidLoad{
        [super viewDidLoad];
        self.automaticallyAdjustsScrollViewInsets = NO; //added  important
    } 
    
    - (void) viewDidLayoutSubviews {
        [super viewDidLayoutSubviews];
        CGFloat top = self.topLayoutGuide.length;
        CGFloat bottom = self.bottomLayoutGuide.length;
        UIEdgeInsets newInsets = UIEdgeInsetsMake(top, 0, bottom, 0);
        self.collectionView.contentInset = newInsets;
    
    }

Dejar respuesta

Please enter your comment!
Please enter your name here