2011-12-14 8 views
8

Necesito asegurarme de que una vista A (tamaño: 200x200) siempre se alinea con la esquina superior derecha dentro de la segunda vista B (tamaño de pantalla completa). Quiero asegurarme de que la vista A permanezca en ese lugar independientemente de la orientación del dispositivo. La verdad es que no tengo ningún problema con esto cuando uso el constructor de interfaces para posicionar las vistas, pero necesito construir esto programáticamente. Supongo que debería usar algunos ajustes de conversión automática, ¿podría decirme cuál se supone que alinee la vista a la esquina superior derecha de su supervista?Establecer posición de vista arriba a la derecha mediante programación en toque de cacao

+1

ha comprobado la propiedad autoResizing de UIView? Http: //developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/occ/instp/ UIView/autoresizingMask http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/c/tdef/UIViewAutoresizing – V1ru8

+0

¿Es la propiedad de autoresizingMask la única requerida? por el comportamiento que describí? Intenté diferentes valores de la propiedad de mastering automático, pero fue en vano ... – mgamer

+0

Primero tiene que posicionar la vista en la posición correcta, pero luego la orientación de re durante la rotación se realiza automáticamente mediante la máscara de cambio de tamaño. – V1ru8

Respuesta

20
UIView parentView //your full screen view 
UIView view //the 200x200 view 

[parentView addSubview:view]; 
CGRect frame = view.frame; 

//align on top right 
CGFloat xPosition = CGRectGetWidth(parentView.frame) - CGRectGetWidth(frame); 
frame.origin = CGPointMake(ceil(xPosition), 0.0); 
view.frame = frame; 

//autoresizing so it stays at top right (flexible left and flexible bottom margin) 
view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin 

Eso posiciona la vista en la parte superior derecha y configura la máscara de aumento de tamaño para que permanezca en esa posición.

+1

Gracias, esto funcionó muy bien para mí. Solo una modificación a la última línea anterior, que debería ser "view.autoresizingMask = ...". –

Cuestiones relacionadas