2011-12-21 36 views
5

Creando una vista con el siguiente código.creando uiview mediante programación?

- (void)loadView { 

paintView=[[UIView alloc]initWithFrame:CGRectMake(0, 50, 320, 430)]; 
[paintView setBackgroundColor:[UIColor yellowColor]]; 
self.view = paintView; 
[paintView release]; 

Pero mi problema es que toda la pantalla se llena de color amarillo, pero quiero con el marco especificado. Estoy creando esta vista en una aplicación basada en vista ... ¿Estoy haciendo algo mal, anulo la vista original?

+0

pero estoy empezando a partir de 50 en el eje y. – NoviceDeveloper

+0

por qué está asignando paintView a self.view self.view = paintView; – Aadil

Respuesta

20

Puede hacerlo de la siguiente manera.

- (void)loadView { 
    /// make a empty view to self.view 
    /// after calling [super loadView], self.view won't be nil anymore. 
    [super loadView]; 

    paintView=[[UIView alloc]initWithFrame:CGRectMake(0, 50, 320, 430)]; 
    [paintView setBackgroundColor:[UIColor yellowColor]]; 
    [self.view addSubview:paintView]; 
    [paintView release]; 
    }; 
+0

Su implementación personalizada de este método no debería llamarse súper. Si desea realizar una inicialización adicional de sus vistas, hágalo en el método viewDidLoad. –

+0

@Alexey, Tal vez en su caso , no necesita implementar el 'loadView' personalizado. Y esta respuesta es un poco vieja. En iOS SDK 4/5, esta respuesta es correcta. El [super loadView] generará una vista vacía para' self.view' . Y en iOS 7 ahora, no sé si funciona o no. – AechoLiu

+1

Hay un error tipográfico en el código y SO no me deja editar la respuesta. El método es "addSubview" no "addSu bView ". –

0

reemplazar self.view =paintView; por

[self.view addSubview: paintView]; 
+0

sin éxito .... Bloqueos de la aplicación :( – NoviceDeveloper

+2

te has perdido [super loadView] en tu vista de carga, agrégalo y tu aplicación no se bloqueará. – iCoder4777

+0

yup .. hecho ...nos sentiremos – NoviceDeveloper

0

voy Cambio de línea n ° 3 en loadView Método, se debe añadir la subvista en la vista principal en lugar de assiging directamente.

[self.view addSubview:paintview]; 
0
UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,35)]; 
newView.backgroundColor=[UIColor clearColor]; 
UITextView *mytext = [[UITextView alloc] initWithFrame:CGRectMake(5.0, 0.0, 100.0, 28.0)]; 
mytext.backgroundColor = [UIColor clearColor]; 
mytext.textColor = [UIColor blackColor]; 
mytext.editable = NO; 
mytext.font = [UIFont systemFontOfSize:15]; 
mytext.text = @"Mytext"; 
mytext.scrollEnabled=NO; 
[mytext release]; 
[newView addSubview:mytext]; 
[self.view addSubview:newView]; 
Cuestiones relacionadas