2012-09-25 17 views
9

Después de compilar mi aplicación iPad con iOS 6.0 SDK, obtengo este comportamiento extraño con la vista detallada de mi UISplitViewController. La vista detallada está posicionada a 20 píxeles (puntos/40 píxeles) por debajo de lo que debería ser.Vista gotas 20 píxeles cuando compila con iOS 6 SDK en Xcode 4.5

enter image description here

Aquí es lo que parecía en 5.1:

enter image description here

Para DetailViewController_iPad.xib en Interface Builder he establecido las métricas simulados> Top Bar en Ninguno. Esto no ayudó. he inscrito el marco de vista:

- (void) viewDidLayoutSubviews { 
//.. etc 
NSLog(@"viewDidLayoutSubviews: %@", CGRectCreateDictionaryRepresentation(self.view.frame)); 
} 

Esto registra la altura como 684 en lugar de la de lo que debe ser: 704.

Height = 684;Width = 703;X = 0;Y = 0;

Alguien tiene alguna experiencia con este ¿tipo de cosa? ¿Qué debo probar ahora?

ACTUALIZACIÓN: Este problema parece intermitente, algunas compilaciones lo causan y otras no.

Si alguien más ha tenido este problema y ha averiguado qué lo causa, todavía estaría interesado en saberlo.

+0

Tengo un problema similar pero con mi imagen de fondo de UIView. Tengo 20 píxeles disponibles en la parte inferior. – Claus

+0

¿Ha configurado correctamente su máscara de aumento automático? (altura flexible, borde fijo superior e inferior) – deanWombourne

+0

@deanWombourne Sí, he hecho eso, fue en vano. – MattyG

Respuesta

9

¡Tuve exactamente el mismo problema!

La cuestión se producirá cuando hay otro controlador de vista en el control de navegación y este controlador de vista dividida se empuja en el método de aplicación: didFinishLaunchingWithOptions: durante el lanzamiento de aplicaciones.

se ha arreglado el problema para mí:

Al empujar la splitViewController Solía ​​

dispatch_async(dispatch_get_main_queue(), ^{ 

    [self.navigationController pushViewController:splitViewController animated:NO]; 

}) 

en lugar de

[self.navigationController pushViewController:splitViewController animated:NO]; 

utilicé esta sólo para iOS6 lo contrario primera vista será Se mostró momentáneamente en OS < iOS6.

+0

Este esquema funciona perfectamente en todas las condiciones \ m/ – Suhaiyl

+0

Acaba de tener un problema similar en el iPhone en iOS 6 (el iOS 5 estaba bien) donde los modales insertados en el controlador de navegación no se muestran detrás de la barra de estado translúcida. Esto lo resolvió. ¡Gracias! –

1

¿Quizás [UIViewController statusBarHidden] está configurado en NO en su controlador de detalle?

+0

Desafortunadamente no. – MattyG

+0

@MattyG Valió la pena intentarlo. 20px siempre se ven como algo con la barra de estado. – Sulthan

+0

sí, gracias por eso. Estoy de acuerdo, parece que la barra de estado también está relacionada. Es por eso que intenté eliminar la barra de estado de las métricas simuladas. No estoy seguro de cómo proceder diagnosticando el problema ahora. – MattyG

1

Xcode 4.5 tiene la costumbre de aplicar el diseño automático, lo que puede ser la causa de algunos de sus problemas: inspeccionar esto e intentar deseleccionarlo.

+0

autolayout no está seleccionado. Gracias de todos modos por la sugerencia. – MattyG

2

Supongo que no está haciendo nada para modificar el marco de la vista en el código, ¿correcto? ¿El controlador de la vista está haciendo todo el diseño? Si es así, ¿ha intentado juguetear con -wantsFullScreenLayout?

Cuando un controlador de vista presenta su vista, normalmente encoge esa vista para que su marco no se superponga a la barra de estado del dispositivo. Establecer esta propiedad en SÍ hace que el controlador de vista dimensione su vista para que ocupe toda la pantalla, incluido el área debajo de la barra de estado. (Por supuesto, para que esto suceda, la ventana que aloja el controlador de vista debe dimensionarse para ocupar toda la pantalla, incluido el área debajo de la barra de estado). Normalmente establecería esta propiedad en SÍ en los casos en que tenga un estado translúcido barra y quiere que el contenido de su vista sea visible detrás de esa vista.

Si esta propiedad es SÍ, la vista no se redimensiona de forma que pueda superponerse a una barra de pestañas, sino que se redimensiona para colocar barras de herramientas traslúcidas. Independientemente del valor de esta propiedad, los controladores de navegación siempre permiten que las vistas unan las barras de navegación translúcidas.

El valor predeterminado de esta propiedad es NO, lo que provoca que la vista se distribuya para que no se superponga a la barra de estado.

Tenga en cuenta que -wantsFullScreenLayout realmente debería afectar el controlador de vista raíz de una ventana. Entonces, si esto soluciona su problema (y no está haciendo nada tonto con la jerarquía de su controlador de vista), ¡presente un error con Apple!

1

ha establecido la propiedad autosizng de altura en el archivo xib o mediante programación, si es así, intente eliminarlos y vea si esto ayuda con el problema.

0

Puede ayudar. También me afectó el mismo problema. Reduje el tamaño de la vista en mi ejemplo: Tengo una altura de 480px en XIB para aplicaciones de iPhone y la reduzco a 460px. Lo mismo ocurre con el iPad no estoy seguro pero puede ayudar.

0

Tuve el mismo problema cuando traté de presentar otro viewcontroller en el método ViewWillAppear. Lo solucioné moviendo mi código presente ViewController al método ViewDidAppear. Espero que ayude

Cuestiones relacionadas