2011-02-08 18 views
19

Tengo un UIViewController raíz que estoy agregando otras UIViewController como subvistas. Actualmente, cada una de las subvistas está muy baja (cubriendo mi barra de pestañas personalizada). Cuando intento algo así como lo siguiente, no funciona:iPhone: cómo configurar el marco UIViewController?

// Test setting frame size to see if it works 
self.view.frame = CGRectMake(0, 0, 200, 200); 

Eso no hace nada para cambiar el tamaño del marco.

Entonces, mi pregunta es, ¿cómo puedo configurar mi marco cuando el UIViewController se inicializa después de que se agrega como la subvista?

+0

Uso Interface Builder si se puede, en su lugar. –

+0

¿Intentó establecer el marco del controlador de subvista en su método viewDidAppear después de que se agregó el controlador de subvista? – alones

+0

Estaba probando el método viewDidLoad. –

Respuesta

21

@Nic Creo que cuando va a agregar ese otro punto de vista, en ese momento se debe definir el otro tamaño de cuadro vistas como esto:

Someviewcontroller *c = initWithNibName 
c.view.frame = CGRectMake(0, 0, 200, 200); 
[self addSubView:c]; 

no sé si esto va a funcionar, pero es algo como esto .

+0

cómo hacerlo si un uiviewcontroller es parte de un controlador de barra de direcciones de usuario (uitabbarcontroller)? – wagashi

+0

No recibí su pregunta ... – Robin

+0

No sé cómo establecer el marco de uiviewcontroller cuando es parte de un controlador de barras uitab. ¿Está claro ahora? – wagashi

6

Primero, asegúrese de que su marco no está cambiando de tamaño. Probablemente/cambie/cambie de tamaño, pero espera que recorta sus contenidos; este comportamiento no está activado por defecto en un UIView, y tendría que ser establecido a través de:

[[self view] setClipsToBounds:YES]; 

comprobar y garantizar que el marco está/no está cambiando de tamaño después de establecer el nuevo marco, intente ingresar la siguiente:

NSLog(@"New frame is: %@", NSStringFromCGRect([[self view] frame])); 

o simplemente establecer un punto de interrupción después del cambio e inspeccionar el valor en su depurador.

+0

Parece que funciona en uno de mis puntos de vista, pero otra vista es un UINavigationController, que no funciona para cambiar el marco. –

4

Entonces siempre hay ...

// Screen, less StatusBar 
CGRect l_RectFrame = [UIScreen mainScreen].applicationFrame; 

O ...

// Entire Screen 
CGRect l_RectFrame = [UIScreen mainScreen].bounds; 


MyView *l_aView = [[MyView alloc] initWithFrame:l_RectFrame]; 
... 
Cuestiones relacionadas