Estou simplesmente instanciando um UITextField
e percebendo que o texto não é centralizado verticalmente. Em vez disso, ele está alinhado com a parte superior do meu botão, o que acho meio estranho, já que eu esperava que o padrão centralizasse verticalmente. Como posso centralizá-lo verticalmente ou há alguma configuração padrão que está faltando?
ios
uitextfield
alignment
Joey
fonte
fonte
textField
é o nome daUITextField
instância dele - a sua pode ser diferente. Então ele terá algo parecidoUITextField *textField = [[UITextField alloc] init];
. Se você usar um nome de variável diferente (qualquer coisa que não sejatextField
depois do*
), precisará fazer issoyourDifferentVariableNameHere.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter
.textField.contentVerticalAlignment = .center
Isso tem vários fatores complicadores, alguns mencionados nas respostas anteriores:
O que você está tentando alinhar é importante, pois o ponto da fonte deve ser centralizado verticalmente devido à altura da linha, ascendentes, descendentes etc. (fonte: ilovetypography.com ) (Imagem agradecida a http://ilovetypography.com/2009 / 01/14 / métricas-imperceptíveis-verticais / )
Quando você lida apenas com números, por exemplo, o alinhamento central padrão não parece muito correto. Compare a diferença nos dois abaixo, que usam o mesmo alinhamento (no código abaixo), um dos quais parece correto e o outro que parece um pouco fora:
Não está bem com uma mistura de letras:
mas parece certo se são apenas números
Por isso, infelizmente, pode ser necessário um pouco de tentativa e erro e ajuste manual para fazer com que pareça visualmente correto.
Coloquei o código abaixo em uma subclasse de UITextField. Ele chama métodos de superclasse, pois isso leva em conta o botão Limpar presente.
fonte
placeholderRectForBounds
se estende demais para a direita. Eu tenho uma visão correta e ela entra ao contrário dos outros limites. Eu só implementadotextRectForBounds
e chamou-o dos outros 2 funcs :)No storyboard: Sob controle -> altere o alinhamento vertical e horizontal, conforme suas necessidades.
fonte
Isso funciona bem para o texto do textField. Mas se você quiser usar o texto do espaço reservado (um texto que aparecerá enquanto o campo de texto estiver em branco), no iOS 7 você encontrará problemas.
Eu o resolvi substituindo a classe TextField e
método.
Como isso:
Funciona para iOS7 e versões anteriores.
fonte