Подтвердить что ты не робот

IOS - настройка кнопки Отмена UISearchBar

В моем приложении iPhone iOS5 я устанавливаю цвет оттенка строки поиска, используя следующий код:

searchBar.tintColor = UIColorMake(@"#EFEFEF");

Значение RGB #efefef равно (239 239 239)
Его работа прекрасна. Но когда появляется кнопка отмены, текст "Отмена" не отображается. Могу ли я настроить только кнопку отмены с прозрачным черно-белым текстом?
Можно ли настроить?

4b9b3361

Ответ 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/...