11

Tengo un personalizado UIViewController y una vista correspondiente en un archivo de punta. La vista se agrega a UIWindow directamente.Constructor de interfaz: Cambiar el tamaño de la vista desde NIB

[window addSubview:customViewController.view]; 

Los tamaños de la ventana y la vista son por defecto (480x320 y 460x320 correspondientemente).

Cuando creo CustomViewController dentro del archivo semilla y comprobar "Cambiar el tamaño de Vista a partir de cacao" en IB ficha Atributos todo funciona muy bien.

Pero cuando creo CustomViewController programmmatically con initWithNibName mensaje la vista no se coloca en la ventana correctamente. Hay una franja vacía en la parte inferior. Su altura es 20px. Veo que se debe al desplazamiento de la barra de estado.

IB se encarga de eso con "Redimensionar vista desde NIB". ¿Cómo emular eso programáticamente?

Parece que IB utiliza alguna subclase personalizada de UIViewController. Entonces, la pregunta: ¿cómo se implementa "Resize View From NIB" allí?

Respuesta

1

Cuando quiero para asegurarse de que la vista abarca toda la pantalla, hago algo como esto:

- (void) viewWillAppear: (BOOL) animated 
{ 
    [super viewWillAppear:animated]; 
    [[self view] setFrame:[[UIScreen mainScreen] bounds]]; 
} 

Se siente como un truco, así que hacerlo solamente como último recurso, cuando puedo' t obtener la vista para comportarse de otra manera :)

+0

Probé, pero no funciona para mí. Aparece la misma franja en la parte inferior. – alexey

+1

[[self view] setFrame: CGRectMake (0, 20, 320, 480)]; Esto funciona, pero se ve como un tipo de hardcoding. [[UIScreen mainScreen] bounds]] regresa (0, 0, 320, 480). – alexey

+0

Debería usar applicationFrame en su lugar: self.view.frame = {CGPointZero, [UIScreen mainScreen] .applicationFrame.size]}; – Francescu

Cuestiones relacionadas