Reputation:
I want to be able to set my own image for the little magnifying glass icon on a UISearchBar. I'd also like to be able to move it around if possible. Any ideas? Currently, I only need support for iOS5 and above.
Upvotes: 10
Views: 12971
Reputation: 151
For Swift 5
searchBar.setImage(UIImage(named: "your_favicon"), for: .search, state: .normal)
Upvotes: 0
Reputation: 1326
For Swift :-
UISearchBar.appearance().setImage(UIImage(named: "new_search_icon"), forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal)
Upvotes: 2
Reputation: 5709
If you want to just change the color of the default magnifying icon, you can set the image to use template mode and then set the image view’s 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##>}];
}
Upvotes: 13
Reputation:
Use
- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state;
Upvotes: 0
Reputation: 8131
try print all subviews... iOS indipendent.
for (id obj in _SearchBar.subviews) {
NSLog(@"%@", obj);
if ( [obj isKindOfClass:[UIImage class]] ) {
NSLog(@"probably found...");
UIImage *img = obj;
[img setImage....];
}
}
Upvotes: -2
Reputation: 23278
For apps which supports iOS 5 onwards, you can use the below method to do this,
- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state;
UIControlStateNormal
and UIControlStateDisabled
are the two possible states for search bar.
For apps which uses OS version before this, this wont work. You might have to create a category on UISearchbar
and change the icon by enumerating the subviews.
Upvotes: 35