IOS - настройка кнопки Отмена UISearchBar
В моем приложении iPhone iOS5 я устанавливаю цвет оттенка строки поиска, используя следующий код:
searchBar.tintColor = UIColorMake(@"#EFEFEF");
Значение RGB #efefef равно (239 239 239)
Его работа прекрасна. Но когда появляется кнопка отмены, текст "Отмена" не отображается. Могу ли я настроить только кнопку отмены с прозрачным черно-белым текстом?
Можно ли настроить?
Ответы
Ответ 1
Вы можете выполнить поиск подкадров UISearchBar
и найти кнопку отмены, это опасно, так как кнопка может меняться
Например, вы можете добавить это в свой viewWillAppear
- (void) viewWillAppear:(BOOL)animated
{
//show the cancel button in your search bar
searchBar.showsCancelButton = YES;
//Iterate the searchbar sub views
for (UIView *subView in searchBar.subviews) {
//Find the button
if([subView isKindOfClass:[UIButton class]])
{
//Change its properties
UIButton *cancelButton = (UIButton *)[sb.subviews lastObject];
cancelButton.titleLabel.text = @"Changed";
}
}
}
Как я уже говорил, прежде чем это может измениться, его взломать это, вы лучше придерживаетесь оригинала или создаете собственную панель поиска.
Ответ 2
Вы можете настроить кнопку "Отмена" на iOS 5 с помощью прокси-сервера внешнего вида.
Вам нужно изменить внешний вид UIBarButtonItem
, если он содержится в UISearchBar
.
Например, чтобы изменить шрифт названия кнопки "Отмена", вы можете использовать:
NSDictionary *attributes =
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], UITextAttributeTextColor,
[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset,
[UIFont systemFontOfSize:12], UITextAttributeFont,
nil];
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil]
setTitleTextAttributes:attributes forState:UIControlStateNormal];
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil]
setTitleTextAttributes:attributes forState:UIControlStateHighlighted];
Ответ 3
Так как iOS5 вы можете редактировать панель навигации, панель инструментов, панель табуляции и еще несколько с помощью этого кода...
NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor darkGrayColor],
UITextAttributeTextColor,
[UIColor whiteColor],
UITextAttributeTextShadowColor, nil];
[[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions];
Я не тестировал его с помощью поиска, но он должен работать аналогично.
Ответ 4
Этот метод работает в IOS7
for (UIView *view in searchBar.subviews)
{
for (id subview in view.subviews)
{
if ( [subview isKindOfClass:[UIButton class]] )
{
// customize cancel button
UIButton* cancelBtn = (UIButton*)subview;
[cancelBtn setEnabled:YES];
break;
}
}
}
Отметьте fooobar.com/info/110036/...