Я хочу иметь возможность установить собственное изображение для значка маленького увеличительного стекла на UISearchBar. Я также хотел бы иметь возможность передвинуть его, если это возможно. Есть идеи? В настоящее время мне нужна поддержка только для iOS5 и выше.
Изменение значка увеличительного стекла на UISearchBar
Ответ 1
Для приложений, поддерживающих iOS 5, вы можете использовать метод ниже,
- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state;
UIControlStateNormal
и UIControlStateDisabled
- два возможных состояния для строки поиска.
Для приложений, использующих версию ОС до этого, это не сработает. Возможно, вам придется создать категорию на UISearchbar
и изменить значок, перечислив подпрограммы.
Ответ 2
Если вы хотите просто изменить цвет значка увеличения по умолчанию, вы можете установить для изображения режим использования шаблона, а затем установить изображения tintColor.
if ([view isKindOfClass:[UITextField class]]) {
UITextField *textField = (id)view;
UIImageView *iconView = (id)textField.leftView;
iconView.image = [iconView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
iconView.tintColor = <##dimmedColor##>;
// other styling:
textField.font = <##font##>;
textField.textColor = <##activeColor##>;
textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:<##searchBar##>.placeholder
attributes:@{NSForegroundColorAttributeName: <##dimmedColor##>}];
}
Ответ 3
Для Swift: -
UISearchBar.appearance().setImage(UIImage(named: "new_search_icon"), forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal)
Ответ 4
Используйте
- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state;
Ответ 5
попробуйте распечатать все подзаголовки... iOS indipendent.
for (id obj in _SearchBar.subviews) {
NSLog(@"%@", obj);
if ( [obj isKindOfClass:[UIImage class]] ) {
NSLog(@"probably found...");
UIImage *img = obj;
[img setImage....];
}
}