2009-04-09 3 views
8

Quelle est la meilleure façon de centrer une étiquette dans un UIView? Si vous faites quelque chose commeCentrer une étiquette dans un UIView

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

Ensuite, vous définissez le point d'origine de l'étiquette au centre de la vue. Le meilleur pari serait de définir le centre de la vue à ce point en utilisant la propriété du centre. J'ai donc essayé en utilisant le code suivant:

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)]; 

Cela donne une étiquette qui est à peu près en dehors des limites de la vue dans le coin supérieur gauche.

Répondre

18

La principale chose que vous faites mal prend la moitié des valeurs origine , plutôt que la moitié des tailles

Cependant, vous n'avez pas besoin de calculer même que dans ce cas - il suffit de faire quelque chose comme les éléments suivants:


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; 

(note, vous n'avez pas besoin de forcer les coordonnées à flotteurs - dans ce cas les écrire comme ints semble plus lisible).

En outre, il est une question de style - mais puisque vous utilisez déjà la syntaxe de la propriété (aView.backgroundColor), vous pouvez aussi bien l'utiliser pour la propriété centre trop :-) Merci

6

Pour positionner n'importe quel enfant horizontalement centré dans un parent, vous devez calculer sa position comme ceci;

childX = (parentWidth - childWidth)/2 

(Ceci s'applique également à la hauteur).

+0

Andrew. Où pensez-vous que sont les meilleures ressources pour apprendre ces équations de type géométrique? simplement la géométrie? – Coocoo4Cocoa

+4

Pour être honnête, je ne sais pas, quelque chose comme ceci est juste mathématique de base - vous avez une quantité d'espace définie (parentWidth - childWidth) que vous voulez distribuer des deux côtés (/ 2). –

Questions connexes