У меня есть следующий код, чтобы изменить внешний вид UISearchBar в моем приложении, и это можно увидеть на изображении ниже также:Изменение кадра кнопка отмены в UISearchBar
for(int i = 0; i < [[searchBar subviews] count]; i++){
UIView *subView = [[searchBar subviews] objectAtIndex:i];
if([[NSString stringWithFormat:@"%@", [subView class]] isEqualToString:@"UINavigationButton"]){
UIButton *cancelButton = (UIButton *)subView;
CGRect buttonFrame = cancelButton.frame;
buttonFrame.size.height = 52;
[cancelButton setFrame:buttonFrame];
[cancelButton setTitle:@"Cancel" forState:UIControlStateNormal];
[cancelButton setBackgroundImage:[UIImage imageNamed:@"cancel.png"] forState:UIControlStateNormal];
[cancelButton setBackgroundImage:[UIImage imageNamed:@"cancel_pressed.png"] forState:UIControlStateHighlighted];
}
}
Как вы можете видеть, что я пытаюсь изменить высоту кнопки, содержащейся в UISearchBar, без везения. Я получаю ссылку на кнопку, так как я могу изменить текст, а фоновое изображение изменяется не на высоту кадра. Я бы просто хотел, чтобы высота кнопки была такой же, как и окно поиска на 52 пикселя.
EDIT:
Я нашел действительно Hacky решение, но это не очень элегантное добавление UIButton как подвид на кнопку отмены. Он выполняет эту работу, но, как я уже сказал, это не очень приятно.
- тип кнопки обычай? – Eric
Нет, это стандартный UIButton в подзаголовках UISearchBar. Просто с фоном, установленным для каждого ControlState. – SamRowley
Может быть, подкласс uisearchbar и переопределить -addSubView метод и установить кадр там? – blub