2011-12-14 12 views
8

Ho bisogno di assicurarmi che una vista A (dimensione: 200x200) sia sempre allineata all'angolo in alto a destra all'interno della seconda vista B (a schermo intero). Voglio assicurarmi che la vista A rimanga in quel luogo indipendentemente dall'orientamento del dispositivo. La verità è che non ho alcun problema con questo quando utilizzo il generatore di interfacce per posizionare le viste, ma ho bisogno di costruirlo a livello di programmazione. Suppongo che dovrei usare alcune impostazioni di autoresizing, potresti dirmi quale dovrebbe allineare la vista all'angolo in alto a destra della sua superview?Imposta la posizione vista in alto a destra in modo programmatico nel tocco di cacao

+1

hai verificato la proprietà autoResizing di 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

La proprietà autoresizingMask è solo quella richiesta per il comportamento che ho descritto? Ho provato diversi valori della proprietà autoresizingMask ma senza successo ... – mgamer

+0

Devi posizionare la vista nella posizione corretta in primo luogo, ma poi il riorientamento durante la rotazione viene eseguito automaticamente dalla maschera di ridimensionamento. – V1ru8

risposta

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 

Che posiziona la vista in alto a destra e imposta la maschera di autorizzazione in modo che rimanga in quella posizione.

+1

Grazie, questo ha funzionato alla grande per me. Solo una modifica all'ultima riga sopra, che dovrebbe essere "view.autoresizingMask = ...". –

Problemi correlati