2013-04-11 14 views
5

Ho un UIButton di tipo UIButtonRoundedRectType che voglio mettere al centro dello schermo orizzontalmente e verticalmente.Come mettere un pulsante al centro di UIView orizzontalmente e verticalmente per qualsiasi dispositivo?

Ho provato a farlo con i numeri di hardcoding, ma questo si verifica quando viene eseguito su iPhone contro iPhone (retina). Vorrei mantenere il pulsante al centro al livello di programmazione calcolando la larghezza del contenitore.

Quindi, ho provato questo ma non funziona.

container = view.frame.size 
button = UIButton.buttonWithType(UIButtonTypeRoundedRect) 
button.frame = [[container.width/2-button.frame.size.width/2,150], [280,50]] 
+0

È possibile farlo utilizzando storyboard utilizzando i vincoli di layout. In questo modo non devi preoccuparti di codificare hard nulla. http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1 – Jordan

+0

Che cosa non funziona? Cosa stai usando per "view"? –

+0

(tieni presente che quanto sopra sarà centrato solo nella "vista". Se "vista" non è centrata, il pulsante sarà ugualmente decentrato.) –

risposta

6

ne dite:

button.center = [button.superview convertPoint:button.superview.center fromView:button.superview.superview]; 
1

Non eri troppo lontano. Funziona (l'ho provato):

container = view.frame.size 
button = UIButton.buttonWithType(UIButtonTypeRoundedRect) 
button_size = [ 280, 50 ] 
left_margin = (container.width/2) - (button_size[0]/2) 
top_margin = (container.height/2) - (button_size[1]/2) 
button.frame = [[ left_margin, top_margin ], button_size ] 
button.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin 
1

Se si utilizza la vista in XIB, è possibile utilizzare quello che ho menzionato.

VAI a XIB -> Fare clic su Visualizza -> Fare clic su Impostazioni dimensione -> Disponi (è possibile impostare la posizione qui).

enter image description here

Selezionare tutte le proprietà di Position of Container e Fill Container.

E se si crea la vista dinamicamente (non in XIB), è possibile utilizzare i limiti di tale superview.

8

approccio semplice:

button.center = view.center;