45 votes

Texte de l'espace réservé pas centré pour objet UITextField créé par programmation

Je suis entrain de créer un objet UITextField en programmant et en le plaçant à l'intérieur d'une UIView. La taille de la police est fixé à 15,0 f (police de caractères). Mais l'espace réservé qui s'affiche n'est pas centré dans l'affichage de texte. Tout savoir comment résoudre ce problème?

J'ai trouvé quelques références sur DONC pour texte flou etc et essayé le cadre du champ de texte avec des valeurs entières, mais il ne fait pas de différence.

UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(5.0f, 6.0f, 278.0f, 32.0f)];
[txtField setPlaceholder:@"My placeholder"];
[txtField setFont:[UIFont systemFontOfSize:15.0]];
[txtField setBorderStyle:UITextBorderStyleRoundedRect];
[txtField setAutocorrectionType:UITextAutocorrectionTypeNo];
[txtField setAutocapitalizationType:UITextAutocapitalizationTypeNone];
[txtField setKeyboardType:UIKeyboardTypeEmailAddress];
[txtField setReturnKeyType:UIReturnKeyDone];
[txtField setClearButtonMode:UITextFieldViewModeWhileEditing];

Merci pour toute aide

Note: je veux dire que le texte n'est pas centré verticalement dans la zone de texte (c'est un peu vers le haut). Si le réglage de l'alignement du texte n'est pas la solution.

Ajout d'une image de la question de clarification comme on le voit dans l'image, le texte de l'espace réservé est de plus en plus vers le haut et non pas dans le centre verticalement. alt text

58voto

jer Points 15036

Vous avez besoin d'ajouter:

txtField.textAlignment = NSTextAlignmentCenter; // Pre-iOS6 SDK: UITextAlignmentCenter

Gardez à l'esprit, ce qui permet d'ajuster l'alignement de l'espace réservé de texte ainsi que le texte que l'utilisateur va entrer dans.

Comment faire pour centrer verticalement

Puisque la question initiale a été mis à jour à la demande de façon à aligner verticalement le texte de l'espace réservé et que la réponse est enfouie dans les commentaires, voici comment faire:

txtField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;

18voto

ancajic Points 705

Cela ne fonctionne pas comme prévu sur iOS7. Sur iOS7, vous aurez à remplacer la classe TextField et

- (void) drawPlaceholderInRect:(CGRect)rect

la méthode.

Comme ceci:

- (void) drawPlaceholderInRect:(CGRect)rect
{
    [[UIColor blueColor] setFill];
    CGRect placeholderRect = CGRectMake(rect.origin.x, (rect.size.height- self.font.pointSize)/2, rect.size.width, self.font.pointSize);
    [[self placeholder] drawInRect:placeholderRect withFont:self.font lineBreakMode:NSLineBreakByWordWrapping alignment:self.textAlignment];
}

Fonctionne pour iOS7 et les versions antérieures.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X