Удаление изображения слева от UISearchbar - PullRequest
23 голосов
/ 14 июля 2010

Можно ли удалить изображение слева от UISearchbar и добавить новое изображение?

Ответы [ 16 ]

39 голосов
/ 25 июля 2012

В iOS 5.0+ вы можете настроить изображение панели поиска, используя

- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state

в конкретном экземпляре UISearchBar или в группе, использующей прокси UIAppearance.

11 голосов
/ 16 апреля 2014

Чтобы полностью удалить значок, вы можете использовать следующие строки кода:

Объектив-C:

// Remove the icon, which is located in the left view
[UITextField appearanceWhenContainedIn:[UISearchBar class], nil].leftView = nil;

// Give some left padding between the edge of the search bar and the text the user enters
[UISearchBar appearance].searchTextPositionAdjustment = UIOffsetMake(10, 0);

Swift:

// Remove the icon, which is located in the left view
UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).leftView = nil

// Give some left padding between the edge of the search bar and the text the user enters
UISearchBar.appearance().searchTextPositionAdjustment = UIOffsetMake(10, 0)
11 голосов
/ 26 июля 2011
// hide magnifying glass
    UITextField* searchField = nil;
    for (UIView* subview in searchBar.subviews) {
        if ([subview isKindOfClass:[UITextField class]]) {
            searchField = (UITextField*)subview;
            break;
        }
    }
    if (searchField) {
        searchField.leftViewMode = UITextFieldViewModeNever;
    }

Это скрывает увеличительное стекло.Хорошо работает.

10 голосов
/ 16 октября 2015

В Swift 2.0 сделайте это:

let textFieldInsideSearchBar = self.searchBar.valueForKey("searchField") as! UITextField
textFieldInsideSearchBar.leftViewMode = UITextFieldViewMode.Never
6 голосов
/ 12 июня 2014

Как изменить положение или скрыть значок лупы в UISearchBar в IOS 7?

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setLeftViewMode:UITextFieldViewModeNever];
5 голосов
/ 09 октября 2018

Решение Swift 4

searchBar.setImage(UIImage(), for: .search, state: .normal)
5 голосов
/ 03 августа 2017

Или в Swift 4.0 простая однострочная:

UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).leftViewMode = .never

ПРИМЕЧАНИЕ: Это удалит значок левой руки из ВСЕХ UITextFields, которые содержатся внутри UISearchBars.

3 голосов
/ 07 марта 2019

Решение Swift 4:

searchBar.setImage(UIImage(), for: .search, state: .normal)

Возможно, вы также хотите отрегулировать зазор с левой стороны:

searchBar.setPositionAdjustment(UIOffset(horizontal: -20, vertical: 0), for: .search)
3 голосов
/ 27 апреля 2014

Замените значок панели поиска прозрачным изображением 1x1 и сместите текстовую позицию

UIImage *blank = [UIImage imageNamed:@"blank"];
[self.searchBar setImage:blank forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
self.searchBar.searchTextPositionAdjustment = UIOffsetMake(-19, 0);
2 голосов
/ 16 июня 2011

вы можете создать подкласс UISearchBar и затем использовать этот метод:

- (void)setTextFieldLeftView:(UIView *)view
{
    UITextField *searchField = nil;
    for (UIView *subview in self.subviews)
    {
        if ([subview isKindOfClass:[UITextField class]])
        {
            searchField = (UITextField *)subview;
            break;
        }
    }

    if (searchField != nil) 
    {
        searchField.leftView = view;
    }
}
...