2010-12-10 11 views
10

Pasé un par de horas intentando posicionar un UIView y eventualmente descubrí que necesitaba modificar el marco de las vistas. Por lo que añade un método 'setPosition' a la subclase UIViewController como esto¿Cómo colocar un UIView?

- (void) setPosition:(CGPoint)position 
{ 

    CGRect newFrame = self.view.frame; 
    newFrame.origin.x = position.x; 
    newFrame.origin.y = position.y; 
    self.view.frame = newFrame; 

} 

Sin embargo, que parece tan simple que no entiendo por qué UIViews no tienen este método ya, lo que me hace pensar que esto no podría sea ​​la forma correcta de hacerlo. Entonces esa es mi pregunta ...

¿Está bien este método o estoy haciendo algo que no debería estar haciendo ... por alguna razón?

Respuesta

12

Copiar, modificar y establecer el marco de nuevo como lo ha hecho aquí es cómo esto se hace generalmente. Esto también se puede hacer mediante la creación de un rect y se establece directamente:

UIView.frame = CGRectMake(50,50,50,50);//x,y,w,h

Hacer esto en un bloque de animación animará a estos cambios.

Alternitively se puede establecer un punto central con vistas:

UIView.center = CGPointMake(50,50);

+0

Si tiene referencias para IBOutlets, pero desea colocar un elemento que solo puede crearse programáticamente, creo un UIView (myFrame) para utilizarlo como un marco, y luego MyCustomView.frame = [myFrame bounds], y agrego MyCustomView para el contenedor de vista principal – jay

2

Otra forma:

CGPoint position = CGPointMake(100,30); 
[self setFrame:(CGRect){.origin = position,.size = self.frame.size}]; 

Esto puedo guardar los parámetros de tamaño y cambio solo origen.

Cuestiones relacionadas