2009-02-06 17 views
12

he encontrado que después de fijar laCómo establecer la posición superior = 0 después de setStatusBarHidden: ¿Sí?

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO] 

en viewDidLoad, a continuación, si quiero alinear una imagen para la parte superior, necesitaré para establecer su posición como .y = -20;

hay alguna forma de hacer que la coordenada y de la posición superior a 0 ? ¿O está condenado a ser -20 después de ocultar la barra de estado?

Gracias por leer.

Respuesta

11

tuve un problema similar en un punto y este fragmento de código fijo para mí: solución

[viewController.view setFrame: [viewController.view bounds]]; 
+0

Muchas gracias !!!! :) – Unreality

+4

[self.view setFrame: [self.view bounds]]; <== Puse esto en su lugar :) – Unreality

+5

Usar view.bounds (al menos para mí) mueve correctamente la vista a 0,0, pero aún deja un espacio de 20 píxeles en la * inferior * (notable porque el color de fondo de mi vista no es blanco)) Esto funciona: [self.view setFrame: [[UIScreen mainScreen] bounds]]; –

3

Imagino que debería agregar un elemento UIStatusBarHidden al Info.plist si desea que la barra de estado se elimine desde el inicio.

[email protected]

También podría mirar en el establecimiento de la autosizing para cambiar el tamaño vertical (y horizontal)

Véase bajo Agregar un texto Verhere por ejemplo, de qué clic encendido en InterfaceBuilder

Cita:

Haga clic en las líneas horizontal y vertical en el cuadro interno para que se conviertan en líneas rojas sólidas. La vista previa animada muestra que el tamaño interno de la vista de texto crecerá y disminuirá con la ventana.

+0

Muchas gracias por su respuesta, pero me está yendo mal ... estableciéndola en SÍ/verdad todavía no puede quitar la barra de estado ... y luego encontré que el código funciona en lugar de agregar esto llave. Supongo que debo haber hecho algo mal – Unreality

+0

Oh, encontré que tengo que establecer el valor en tipo booleano primero ... – Unreality

2

Asegúrate de que el tamaño de la vista de tu raíz en tu plumín esté configurado correctamente en 480x320. Algunos de los proyectos de plantillas crean esos en 460x320 para dar cuenta de la barra de estado. Si carga una vista que abarca toda la pantalla y la barra de estado está oculta, debería funcionar y no debería necesitar hacer nada especial.

+0

Gracias por su respuesta, y ya lo he configurado 480x320, pero está dejando un espacio en blanco de 20 píxeles en el arriba luego – Unreality

4

de Justin Gallagher es casi correcta, pero tiene un efecto secundario importante.

Ocultar la barra de estado y luego establecer el marco de la vista a sus propios límites funcionará en la orientación actual. Pero la rotación será fea. Si está en el retrato, por ejemplo, al girar el dispositivo hacia el paisaje, el marco de la vista completa se desplazará a los 256 puntos correctos, dejando un gran espacio negro en la pantalla. solución

de bmoeskau (a otro efecto secundario) en los comentarios anteriores evita este problema:

[self.view setFrame: [[UIScreen mainScreen] bounds]]; 
0

Si se tiene una vista de desplazamiento anidado dentro de una visión asegurarse de cambiar eso también. Este código resolvió todos mis problemas.

[self.view setFrame: [self.view bounds]]; 
[self.theScroller setFrame: [self.view bounds]]; 

"theScroller" es el nombre de mi scrollview.

0

La siguiente solución funciona correctamente

  • en ambos iOS 6 y iOS 7,
  • tanto para ocultar y mostrar la barra de estado,
  • tanto con orientación vertical y horizontal, y
  • incluso con la barra de estado de llamada entrante visibles

En el controlador de vista, añadir los siguientes:

- (BOOL)prefersStatusBarHidden // For iOS 7.0 or above. 
{ 
    return _isStatusBarHidden; 
} 

// Call this method to show/hide the status bar and resize the view. 
- (void)setStatusBarHidden:(BOOL)isStatusBarHidden 
{ 
    _isStatusBarHidden = isStatusBarHidden; 

    // For iOS 7.0 or above... 
    if([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) 
    { 
     // Update status bar visibility. 
     [self setNeedsStatusBarAppearanceUpdate]; // Tell the view controller that the return value of -prefersStatusBarHidden has changed. 
    } 
    // Otherwise... 
    else 
    { 
     // Show or hide status bar. 
     [[UIApplication sharedApplication] setStatusBarHidden:_isStatusBarHidden withAnimation:UIStatusBarAnimationNone]; 

     // Resize view. 
     self.view.frame = [UIScreen mainScreen].applicationFrame; 
    } 
} 

Aquí, BOOL _isStatusBarHidden; es una variable miembro de la clase controlador de vista.

Notas:

Cuestiones relacionadas