Ответ 1
Если вы имеете в виду увеличительное стекло, то нет. Нет никакого общедоступного API для изменения или удаления этого. Просто используйте UITextField
вместо этого.
Можно ли удалить изображение слева от UISearchbar
и добавить новое изображение?
Если вы имеете в виду увеличительное стекло, то нет. Нет никакого общедоступного API для изменения или удаления этого. Просто используйте UITextField
вместо этого.
В iOS 5.0+ вы можете настроить изображение в строке поиска с помощью
- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state
в конкретном экземпляре UISearchBar или через связку с использованием прокси-сервера UIAppearance
.
// 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;
}
Это скрывает увеличительное стекло. Хорошо работает.
Чтобы полностью удалить значок, вы можете использовать следующие строки кода:
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)
В swift 2.0 сделайте следующее:
let textFieldInsideSearchBar = self.searchBar.valueForKey("searchField") as! UITextField
textFieldInsideSearchBar.leftViewMode = UITextFieldViewMode.Never
Как изменить положение или скрыть значок лупы в UISearchBar в IOS 7?
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setLeftViewMode:UITextFieldViewModeNever];
Или в Swift 4.0 простой однострочный:
UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).leftViewMode = .never
ПРИМЕЧАНИЕ.. Это приведет к удалению значка левой руки из ALL UITextFields
, содержащегося внутри UISearchBars
.
Swift 4 Solution
searchBar.setImage(UIImage(), for: .search, state: .normal)
Замените значок панели поиска прозрачным изображением 1x1 и смещайте текстовую позицию
UIImage *blank = [UIImage imageNamed:@"blank"];
[self.searchBar setImage:blank forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
self.searchBar.searchTextPositionAdjustment = UIOffsetMake(-19, 0);
Решение Swift 4:
searchBar.setImage(UIImage(), for: .search, state: .normal)
Вы, вероятно, также хотите отрегулировать зазор на левой стороне:
searchBar.setPositionAdjustment(UIOffset(horizontal: -20, vertical: 0), for: .search)
вы можете подклассифицировать 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;
}
}
Используйте этот код, чтобы скрыть значок панели поиска: -
[searchBarItems setImage:[UIImage imageNamed:@"searchIcon.jpg"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
Возьмите прозрачное изображение с именем searchIcon.jpg и иконкой. его работа для меня
Вы не можете легко удалить изображение, но вы можете легко вставить 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];
Помните - жизнь обманывает;)...
Изображение должно быть либо идеально выровнено по пикселям (воспроизведение с пикселями), либо новое изображение должно иметь белый фон, где необходимо скрыть исходное изображение, но это не мешает остальной строке поиска (если вы просто используете белый фон для всего изображения, левые углы будут мешать фону).
в ios6, по крайней мере, существует [searchbar setImage:<#(UIImage *)#> forSearchBarIcon:<#(UISearchBarIcon)#> state:<#(UIControlState)#>]
свойство u может установить:)
Для конкретного экземпляра UISearchBar
.
Objective-C:
// Get the inner search field.
UITextField *searchField = (UITextField *)[searchBar valueForKey:@"searchField"];
// Hide the left search icon.
[searchField setLeftViewMode:UITextFieldViewModeNever];
Собственно, вы можете. Вам нужно пройти через все подпункты в строке поиска, а затем в поле поиска.