Текст закладок, смещенный в UITextField UISearchBar
Я пытаюсь настроить шрифт UISearchBar через внешний прокси. Он работает, но каким-то образом текст заполнителя не центрирован по вертикали. Я попытался установить свойство вертикального выравнивания; текст заполнителя будет центрирован, но введенный текст будет немного ниже центральной линии... Есть ли способ исправить это?
Изменить: Код, который я использовал для добавления пользовательского шрифта:
[[UITextField appearanceWhenContainedIn: [UISearchBar class], nil]
setFont: [UIFont customFontWithSize: 17]];
![placeholder text]()
![normal text]()
Ответы
Ответ 1
Всякий раз, когда это происходит со мной, это обычно вызвано некоторой модификацией UIAppearance
, не хорошо сочетающейся с UISearchBar
. Посмотрите на любые предыдущие хаки, которые вы, возможно, сделали, и, возможно, попробуйте прокомментировать их по одному.
В моем конкретном случае это была фактически модификация NSForegroundColor
в текстовом атрибуте, поэтому это несоосность может быть не связано с изменением шрифта.
Ответ 2
Вам нужно установить выравнивание textField внутри searchBar.
Получите textField из подзонов панели UISearch и просто установите его выравнивание по центру. Попробуйте пример кода ниже.
- (void)viewDidLoad
{
for (UITextField *txt in _searchbar.subviews) {
if ([txt isKindOfClass:[UITextField class]]) {
[txt setTextAlignment:NSTextAlignmentCenter];
}
}
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
здесь _searchbar - это выход из UISearchBar.
Ответ 3
- (void)viewDidLoad
{
for (UITextField *txt in search.subviews) {
if ([txt isKindOfClass:[UITextField class]]) {
txt.font = [UIFont fontWithName:@"Arial-BoldMT" size:17];
txt.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
}
}
[super viewDidLoad];
}
Попробуйте этот код один раз.