2010-09-10 14 views
8

La hauteur par défaut d'un UITextField avec le style de bordure UITextBorderStyleRoundedRect est 31px. Pour une application iPad, je voudrais créer un UITextField d'une hauteur de 60px et positionner le texte verticalement de manière à ce qu'il paraisse bien (par défaut, le texte n'est dessiné qu'à quelques pixels en dessous de la bordure supérieure du UITextField).UITextField: Augmentez la taille et positionnez le texte de saisie verticalement au centre

Si je fais ce qui suit ...

UITextField *txtLogin = [[UITextField alloc] initWithFrame:CGRectMake(200,200,300,60)]; 
txtLogin.borderStyle = UITextBorderStyleRoundedRect; 

... le résultat ressemble à ceci: http://grab.by/6jRc

Comme vous pouvez le voir, le texte d'entrée ne soit pas centré verticalement. J'ai essayé de trouver une solution et j'ai découvert que je devais hériter de ma propre classe personnalisée de UITextField et remplacer la méthode - (CGRect)textRectForBounds:(CGRect)bounds. Cependant, cette méthode n'est jamais appelée et selon this link il y a un bug dans l'API d'Apple. Par conséquent, je suis à la recherche d'alternatives qui fonctionnent.

Quelle serait une bonne solution pour résoudre ce problème et obtenir un alignement vertical correct pour le texte d'entrée?

Répondre

21

[txtLogin setContentVerticalAlignment: UIControlContentVerticalAlignmentCenter];

+0

merci, cela a fonctionné pour moi. – kiteloop