Pregunta sobre uiview, xcode, xib, iphone, window – No estoy seguro de por qué UIView está siendo empujado alrededor de 10px

10

He creado una aplicación de iPhone simple que tiene dos archivos .xib. En la aplicación, el delegado en la aplicación terminó de iniciarse, muestro el primer archivo .xib llamando:

<code>[window addSubview:myView];
</code>

y hago lo mismo en una IBAction para un UIButton para cambiar la vista a myView2.

Lo que estoy descubriendo es que hay una barra blanca de alrededor de 10 píxeles cuando ejecuto la aplicación, para ambas vistas. También observo que los botones están desplazados en 10 píxeles (aprox.). Así que tengo la impresión de que la vista se muestra desde 10 píxeles fuera de la pantalla y termina en corto.

¿Alguna idea de por qué podría estar sucediendo esto, cómo puedo solucionarlo o cómo puedo depurar más lo que está pasando? He revisado mis archivos .xib y están consumiendo toda la altura del dispositivo (es decir, sin barras blancas), por lo que este parece ser un problema dentro de XCode.

EDIT: he reducido el problema un poco. Estoy usando dos métodos para cargar la subvista. Cuando carga la primera vista por dentro.applicationDidFinishLaunching todo esta bien. Sin embargo, si sustituyo los dos mensajes awindow con el[self originalView] Método, entonces todo va un poco loco.

<code>- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    //[self originalView];  <- I want to use this instead of the following two lines

    // Override point for customization after app launch    
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];

}

-(void)endView{
    endV = [[EndViewController alloc] initWithNibName:@"EndView" bundle:nil];
    [window removeFromSuperview];
    [window addSubview:endV.view];  
}
-(void)originalView{
    viewController = [[MyAppViewController alloc] init];
    [window removeFromSuperview];
    [window addSubview:viewController.view];

}
</code>

Por lo que puedo ver, siempre estoy llamando a las mismas líneas de código, no importa si está dentro de laapplicationDidFinishLaunching o en[self originalView] pero parece quewindow Se está convirtiendo en un objeto diferente.

Tu respuesta

5   la respuesta
2

puede agregar elementos de interfaz simulados que aparecerán programáticamente (como la barra de estado o la barra de navegación). En su inspector, seleccione su vista y vaya a la pestaña Atributos. Aquí puede simular la barra de estado, una barra superior o una barra inferior.

12

empujándolo en un controlador de UINavigation), ajusta el marco de su vista.

Como está agregando la subvista manualmente, debe ajustar el marco usted mismo. El origen se encuentra en la esquina superior derecha (en la parte superior de la barra de estado). Desea cambiar su vista 20 píxeles hacia abajo.

Todos los ejemplos que he visto utilizan UINavigationController para mostrar una jerarquía de listas, ¿para qué sirve solo? ¿O puedo usarlo para controlar qué vistas se muestran, incluso si no necesitan una barra de navegación, etc.? mac_55
5

<code>// adjust the frame of subview which is going to be add
self.navController.view.frame = CGRectMake(0, 0, 320, 460);
[self.view addSubView:self.navController.view];
</code>

Funciona bien para mí ahora, buena suerte ~ :)

1

UIViewController en el lugar equivocado Yo tuve el mismo problema. Se resolvió moviendo[self.navigationController pushViewController: animated:] desdeviewDidLoad aviewDidAppear: en un anteriorUIViewController en jerarquía.

1

o la vista está parcialmente oculta detrás de la barra de estado, tiene algo que ver con

La definición de un Autorista debe en su controlador raíz: no estoy seguro de si se trata de un error o no, pero trate de mantener la coherencia con el retorno de esa función para todos los controladores de vista secundaria (generalmente, esto hace que un controlador de vista se oculte detrás de la barra de estado)la definición de una subvista de wantsFullscreen - establecida en NO si es posible

Tuve ambos errores en mi aplicación y los resolví! Espero poderte ahorrar algo de tiempo (desperdicié mucho en él)

Preguntas relacionadas