2010-08-19 8 views
26

que tienen algo como esto:Cómo agregar una subvista con un puesto?

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
[mainCanvas addSubview: myViewController.view]; 
self.view = mainCanvas; 

Que se añadirá en la posición (0, 0), pero quiero añadir que en (0, 100) o en otro lugar. ¿Como lo puedo hacer?

Respuesta

53

Algo como esto:

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
myViewController.view.frame = CGRectMake(0, 100, myViewController.view.frame.size.width, myViewController.view.frame.size.height); 
[mainCanvas addSubview: myViewController.view]; 
self.view = mainCanvas; 
+0

@applefreak el marco * es * la posición de la vista en el sistema de coordenadas de su supervista. Lo que estás pidiendo no tiene sentido. –

+0

Esta es la forma más limpia y ni siquiera requiere que se habiliten las traducciones de máscara. Increíblemente, en mi caso, '(0, 0, ancho, alto)' tenía que ser declarado explícitamente ya que no era un comportamiento predeterminado. ¡Loca! – Angad

8

Establezca la propiedad del marco en la vista secundaria.

+1

¿Puede proporcionar una muestra? – DNB5brims

12

Además de establecer la propiedad frame, también se puede establecer la propiedad center de una vista.

6

Esta es la mejor manera que he encontrado para agregar una vista secundaria, como una pantalla de carga o algo que desea mostrar si usted está en un UIView, UIScrollView o UITableView.

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
myViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); 
[self.view addSubview:myViewController.view]; 
self.view.bounds = myViewController.view.bounds; 

Esto hará que la subvista aparecen en pantalla completa, sin importar dónde se encuentre en el self.view añadiendo a la subvista dónde se encuentra actualmente en su self.view en lugar de colocarla en la esquina superior izquierda , solo se muestra completamente si estás en la parte superior de tu vista.

Cuestiones relacionadas