He actualizado mi proyecto de iOS 6 a iOS 7 pero parece que hay un pequeño problema. La barra de estado y una barra de herramientas es fundamental y muy cerca el uno del otro. La barra de herramientas anteriormente se ha añadido manualmente arrastrando en el guión gráfico. Así es como se muestra:

iOS 7 UIToolBar Primordial Con la Barra de Estado

He visto un par de preguntas que se sugiere el uso de «positionForBar:» y «- (UIBarPosition)positionForBar:(id)de la barra», pero no sé exactamente cómo usarlos, un poco de explicación y fácil manera de hacerlo podría ser de ayuda. Gracias!

ACTUALIZACIÓN: Siguiente es el código que también necesita una revisión. Se estaba trabajando bien antes, pero desde el detailviewcontroller (WebViewController) es ahora empotradas dentro de un controlador de navegación, el código de abajo, está causando una excepción. Parece como si la necesidad de modificar la primera línea de este método.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

        WebViewController *wvc = [self.navigationController.parentViewController childViewControllers][1];
        RSSItem *entry = [[channel items] objectAtIndex:[indexPath row]];
        wvc.title = entry.title;
        wvc.urlString = entry.link;   
}

OriginalEl autor AJ112 | 2013-09-21

6 Comentarios

  1. 2

    Si su configuración es una vista dividida como el programa de instalación con dos contenedor de opiniones, debe ser capaz de hacer esto. Al configurar el contenedor de puntos de vista, arrastre la parte superior hasta que la línea azul punteada que indica la parte superior está en la parte inferior de la barra de estado. Hacer esto con tanto contenedor vistas. Agregar la barra de herramientas para el controlador embebido (no el contenedor de vista), fijado a la parte superior de que el controlador de la vista. Con la vista izquierda, está incrustado en un controlador de navegación, mi pantalla se veía así:

    iOS 7 UIToolBar Primordial Con la Barra de Estado

    Puedo usar la barra de navegación en la vista de detalle contenedor en lugar de una barra de herramientas. Como ustedes saben el color que le damos a la barra de navegación se aplica a la barra de estado, así como en iOS 7, y es lo que estoy tratando de lograr.
    Seguro. Puede integrar el controlador en un controlador de navegación, o simplemente arrastre en la barra de navegación.
    Sí me puede utilizar una barra de navegación o incrustar la vista de detalles en un controlador de navegación. Con la barra de herramientas se estaba trabajando bien, que sustituyó a la barra de herramientas con una barra de navegación arrastrado en la vista de detalles. Funciona, pero choca con la barra de estado como la barra de herramientas. Si muevo la barra de navegación en la vista de detalles de los 20 puntos por debajo manualmente, todavía no puedo cambiar el color de la barra de estado cambiando el color de la barra de navegación. Resulta que arrastró manualmente la barra de navegación no cambia la barra de estado de color con ella.
    La segunda opción es la de insertar la vista de detalles en el controlador de navegación. He intentado hacer eso y es la cosa correcta de hacer si quiero que la barra de estado y barra de navegación de color de la misma para iOS 7. pero lanza la excepción. Aquí está el enlace a un proyecto de ejemplo con barra de navegación añadido a jmp.sh/v/cutCPH6EkzQgotOerSLo
    No estoy seguro de que, bajo qué circunstancias usted obtenga una excepción, pero es probablemente debido a que usted necesita para cambiar la forma de definir auto.splitViewController en el detalle de la controladora. En lugar de auto.splitLikeController = (RDSplitLikeController *)auto.parentViewController usted necesita tener auto.splitLikeController = (RDSplitLikeController *)auto.navigationController.parentViewController. Cuando me incrustado el detalle de controlador en un controlador de navegación, cambiar lo que he dicho arriba, y agrega el botón de la barra, todo funcionaba bien.

    OriginalEl autor

  2. 6
    _toolBar.delegate = self;
    
    - (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar {
        CGRect frame = _toolBar.frame;
        frame.origin = CGPointMake(0, [UIApplication sharedApplication].statusBarFrame.size.height);
        _toolBar.frame = frame;
    
        return UIBarPositionTopAttached;
    }

    retrato de la barra de

    paisaje de la barra de

    ¿Y si la vista está en el contenedor dentro de una vista estupenda. ¿Qué hacer entonces?
    La barra de herramientas está en el interior del recipiente?
    La barra de herramientas en la vista, pero que a la vista está en el interior del recipiente? He utilizado el código en tu respuesta pero no funcionó. Alguna idea de qué otra cosa que debo cambiar para que funcione?
    Tal vez su contenedor de vista del origen.y es negativa? Trate de mover el contenedor de vista. Y de verificación de la barra de herramientas del autoresizing máscara. Debe ser UIViewAutoresizingFlexibleTopMargin.
    Y el uso UIViewAutoresizingFlexibleWidth si usted necesita orientación vertical y horizontal en su aplicación.

    OriginalEl autor

  3. 4

    De la vista superior de la restricción no debe ser superior espacio para superview, pero en lugar de espacio en la parte superior superior de la guía de diseño.

    Usted puede hacer esto mediante el movimiento de la parte superior del espacio por debajo de la barra de estado y, a continuación, utilizar la restricción de menú para agregar la restricción a la del vecino más cercano, que ahora debe ser la guía de diseño, o se puede hacer como se describe en este vínculo de desarrolladores de apple, biblioteca.

    Este enlace fue muy útil para mí. Una cosa que he tenido que enfrentar fue que XCode mantiene el deseo de crear el nuevo espacio vertical de la restricción por la asociación de la parte inferior de la UIToolbar con la parte Superior Guía de Diseño, que requieren valores negativos para hacer que las cosas se ven a la derecha. Para engañar a XCode en asociando la parte superior de la UIToolbar con la parte Superior Guía de Diseño, lo primero que tuve que mover la parte superior de la misma hacia abajo por debajo de la guía y, a continuación, crear la restricción. Después de eso, me puse el valor de restricción a cero, que se atornillan a los dos juntos.

    OriginalEl autor

  4. 3

    Recuerde que usted no sólo debe mover las cosas hacia abajo en IB por dos razones:

    1. No es compatible con iOS 6
    2. No extender la parte superior de la barra de efecto de fondo debajo de la barra de estado

    iOS 7 UIToolBar Primordial Con la Barra de Estado

    Por lo tanto, si usted desea iOS6 & iOS7 de compatibilidad, se puede añadir un condicional para los objetos que requieren personalización en ViewDidLoad. Advertencia siendo este último de los casos – siempre tratar de solucionar con el diseño automático /IB primero:

    #import <Availability.h>
    
    #ifdef __IPHONE_7_0
    
            CGRect barFrame = topBar.frame;
            barFrame.origin = CGPointMake(0, [UIApplication sharedApplication].statusBarFrame.size.height);
            [topBar setFrame:barFrame];
    
            //move other stuff around too
    
        #endif

    Y establecer su barra de delegar mucho como Luniz anterior,reemplace positionForBar.

    topBar.delegate = self;
    
    - (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar {
    
        return UIBarPositionTopAttached;
    }
    Por supuesto, toda la primera parte podría ser resuelto simplemente por medio de el » Uso de la Pantalla Completa (Depreciado)’ (aka wantsfullscreen) bandera en IB.

    OriginalEl autor

  5. 1

    Yo estaba tratando de hacer más o menos lo mismo, pero no me gusta el blanco de la barra de estado de la aceptó respuesta. Me las arreglé para hacer la barra de herramientas que aparece debajo de la barra de estado para que tenga un color uniforme a la Barra de Navegación que está a su lado en la vista principal.

    Mi solución fue hacer que la Barra de herramientas de 64 puntos altos y establecer el Topspace para el superview a 0.

    Al hacer esto, usted tiene que asegurarse de que usted no está creando la restricción a la parte Superior del Diseño del Espacio de Guía. Yo era capaz de conseguir lo que se hace en Interface Builder, estableciendo el Marco 0,0 con una Altura de 64. Luego he utilizado el Pin de diálogo de la herramienta flotante menú. He utilizado cero con la parte superior de la viga para crear la restricción.

    Los bordes de la parte inferior de partido en el que el Maestro y el Detalle y el color es consistente. Los controles en mi barra de herramientas terminó con poca gente.

    Gracias … la adición de 20 a la altura de la barra de herramientas fue la única solución que he encontrado que no requieren de Autodiseño, la cual requiere iOS 6. Tengo un montón de iPad 1 de los usuarios, así que quiero que se mantenga el soporte para iOS 5 en mi aplicación.
    En realidad cuando yo aumento de la altura de la barra de herramientas, me encontré con que la barra de título (UIBarItem) se mantuvo alineado abajo pero los botones de barra de herramientas (UIBarButtonItem) fueron centrada verticalmente — su posición era demasiado alto. La única forma en que podía encontrar para ajustar la posición fue para configurar el botón de barra de herramientas como un UIButton establece como el customView de la UIBarButtonItem, a continuación, ajuste el marco de la UIButton. Si usted necesita para aplicar la barra de herramientas tintColor para el icono del botón, entonces usted tiene que utilizar un UIImageView en lugar de un UIButton.

    OriginalEl autor

  6. -1

    Swift 3

    Conectar el bar delegado y se ajustan a UIToolbarDelegate. A continuación, agregue este método delegado:

    func position(for bar: UIBarPositioning) -> UIBarPosition {
        return UIBarPosition.topAttached
    }

    porque ahora

    enum UIBarPosition : Int {
        case any
        case bottom
        case top
        case topAttached
    }

    OriginalEl autor

Dejar respuesta

Please enter your comment!
Please enter your name here