2009-04-09 11 views
8

Qual è il modo migliore per centrare un'etichetta in un UIView? Se fate qualcosa comeCentrare un'etichetta in un UIView

UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(view.frame.origin.x/2, view.frame.origin.y/2, 50.0, 50.0)]; 

Poi si sta impostando il punto di origine del marchio al centro della vista. La soluzione migliore sarebbe quella di impostare il centro della vista in quel punto usando la proprietà centrale. Così ho provato ad utilizzare il seguente codice:

UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease]; 
aView.backgroundColor = [UIColor darkGrayColor]; 
CGRect frame = aView.frame; 

UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125.0f, 30.0f)]; 
[aLabel setCenter:CGPointMake(frame.origin.x/2, frame.origin.y/2)]; 

che produce un'etichetta che è praticamente al di fuori dei confini della vista nell'angolo in alto a sinistra.

risposta

18

La cosa principale che sta facendo male sta prendendo la metà dei origine valori, piuttosto che la metà delle dimensioni

Tuttavia, non è necessario calcolare anche che in questo caso - solo fare qualcosa di simile il seguente:


UIView *aView = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease]; 
aView.backgroundColor = [UIColor darkGrayColor]; 

UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 125, 30)]; 
aLabel.center = aView.center; 

(nota, non è necessario forzare quelle coordinate di carri allegorici - in questo caso la scrittura loro come interi sembra più leggibile).

Inoltre, è una questione di stile - ma dal momento che si sta già utilizzando la sintassi di proprietà (aView.backgroundColor) si può anche utilizzare per la proprietà centro troppo :-)

6

Per posizionare qualsiasi bambino centrato orizzontalmente in un genitore si calcola la sua posizione in questo modo;

childX = (parentWidth - childWidth)/2 

(Questo vale anche per l'altezza).

+0

Grazie Andrea. Dove pensi che siano le migliori risorse per imparare queste equazioni di tipo geometrico? semplicemente geometria? – Coocoo4Cocoa

+4

Ad essere sincero, non lo so, qualcosa di simile è solo matematica di base - hai una quantità di spazio (genitoreWidth - childWidth) che vuoi distribuire su due lati (/ 2). –

Problemi correlati