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

Удаление изображения слева от панели поиска UIS

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

4b9b3361

Ответ 1

Если вы имеете в виду увеличительное стекло, то нет. Нет никакого общедоступного API для изменения или удаления этого. Просто используйте UITextField вместо этого.

Ответ 2

В iOS 5.0+ вы можете настроить изображение в строке поиска с помощью

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

в конкретном экземпляре UISearchBar или через связку с использованием прокси-сервера UIAppearance.

Ответ 3

// 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;
    }

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

Ответ 4

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

Objective-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)

Ответ 5

В swift 2.0 сделайте следующее:

let textFieldInsideSearchBar = self.searchBar.valueForKey("searchField") as! UITextField
textFieldInsideSearchBar.leftViewMode = UITextFieldViewMode.Never

Ответ 7

Или в Swift 4.0 простой однострочный:

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

ПРИМЕЧАНИЕ.. Это приведет к удалению значка левой руки из ALL UITextFields, содержащегося внутри UISearchBars.

Ответ 8

Swift 4 Solution

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

Ответ 9

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

UIImage *blank = [UIImage imageNamed:@"blank"];
[self.searchBar setImage:blank forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
self.searchBar.searchTextPositionAdjustment = UIOffsetMake(-19, 0);

Ответ 10

Решение Swift 4:

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

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

searchBar.setPositionAdjustment(UIOffset(horizontal: -20, vertical: 0), for: .search)

Ответ 11

вы можете подклассифицировать 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;
    }
}

Ответ 12

Используйте этот код, чтобы скрыть значок панели поиска: -

[searchBarItems setImage:[UIImage imageNamed:@"searchIcon.jpg"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];

Возьмите прозрачное изображение с именем searchIcon.jpg и иконкой. его работа для меня

Ответ 13

Вы не можете легко удалить изображение, но вы можете легко вставить UIImageView для замены изображения, например:

UIImageView *searchIcon = [[UIImageView alloc] initWithImage:[MBUIFactory imageNamed:@"ic_search_normal.png"]];
searchIcon.frame = CGRectMake(10, 10, 24, 24);
[self.searchBar addSubview:searchIcon];
[searchIcon release];

Помните - жизнь обманывает;)...

Изображение должно быть либо идеально выровнено по пикселям (воспроизведение с пикселями), либо новое изображение должно иметь белый фон, где необходимо скрыть исходное изображение, но это не мешает остальной строке поиска (если вы просто используете белый фон для всего изображения, левые углы будут мешать фону).

Ответ 14

в ios6, по крайней мере, существует [searchbar setImage:<#(UIImage *)#> forSearchBarIcon:<#(UISearchBarIcon)#> state:<#(UIControlState)#>]

свойство u может установить:)

Ответ 15

Для конкретного экземпляра UISearchBar.

Objective-C:

// Get the inner search field.
UITextField *searchField = (UITextField *)[searchBar valueForKey:@"searchField"];

// Hide the left search icon.
[searchField setLeftViewMode:UITextFieldViewModeNever];

Ответ 16

Собственно, вы можете. Вам нужно пройти через все подпункты в строке поиска, а затем в поле поиска.