Tengo una vista que se carga en MainWindow.xib. Es solo una vista con una vista de uiimage que muestra una imagen en toda la pantalla (320 X 480). Cuando se carga la aplicación Me muestran este punto de vista y luego hacer una ficha Controller BarIPhone - UIView addSubview Gap en la parte superior
[self.view addSubview:tabbarController.view];
es sólo un UITabBarController con 2 Ver los controladores añadidos a la misma. Cuando agrega la vista de tabbarController a la subvista, deja un espacio en la parte superior de aproximadamente 20 px. Mi aplicación tiene una barra de estado, pero básicamente es espacio para otra. Esto sucede a menos que agregue esto a mi controlador de vista:
self.view.frame = CGRectMake(0, 0, 320, 480);
¿Alguien puede explicar esto. Estaba haciendo
self.view = tabbarController.view;
pero me dijeron que no debía hacer eso. Así que ahora estoy agregando una subvista, pero no entiendo por qué tengo que ajustar el CGRect de mi vista para no mostrar el 20px.
Gracias por una explicación clara. Tal vez debería volver atrás y reestructurar parte de mi aplicación. Quiero hacer las cosas de la manera correcta, pero pensé que sería mejor separar la lógica del controlador de vista del delegado de la aplicación, por lo que mi controlador de vista raíz hace todo lo que necesita. Eso explicaría por qué en mi controlador de vista raíz si hiciera self.view = tabbarController.view en lugar de agregar como una subvista, no obtendría el espacio. Gran respuesta. Yo votaría más si pudiera. – Brian
Parece que tu instinto fue bueno aquí. Esta es solo una de esas limitaciones de diseño en Cocoa Touch que tenemos que solucionar por el momento. Tenga en cuenta que no es necesario que agregue tabbarController.view a su ventana del delegado de la aplicación. Puede agregarlo en su controlador de vista si cree que tiene más sentido. Solo necesita tener acceso al objeto ventana, ya sea a través del método keyWindow, o configurándolo como una propiedad en su controlador en la aplicaciónDidFinishLaunching :. – cduhn
, pero ¿no significa esto que tabbarcontroller.view ahora es una subvista de window.view? Pero no es correcto en mi caso tengo una vista de anuncio, y luego una segunda vista de contenido. Y agrego tabbarcontroller.view a la vista de contenido. De esta forma, viewcontroller manejará el contenido/vista previa dependiendo de los anuncios. si agrego el tabbarcontroller.view a la ventana, no creo que pueda manejar las vistas con mi viewcontroller. ¿Qué piensas? – LolaRun