2012-11-17 6 views
10

Ich möchte in der Lage sein, mein eigenes Bild für das kleine Lupensymbol in einer UISearchBar festzulegen. Ich würde es auch gerne bewegen können, wenn es möglich wäre. Irgendwelche Ideen? Derzeit benötige ich nur Unterstützung für iOS5 und höher.Ändern Sie das Lupensymbol auf einer UISearchBar

+0

@ACB war so freundlich, das in einem anderen Beitrag zu beantworten, die ich über UISearchBar hatte, wo ich dies als zusätzliche Frage in den Kommentaren gefragt. Er sagte: "Sie können für iOS 5 App wie unten erwähnt verwenden. Für Anwendungen, die OS-Version verwendet, wird dies nicht funktionieren. - (void) setImage: (UIImage *) iconImage forSearchBarIcon: (UISearchBarIcon) Symbolstatus: (UIControlState) Zustand;" –

Antwort

34

Für Anwendungen, die iOS 5 weiter unterstützt, können Sie das unten stehende Methode, dies zu tun,

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

UIControlStateNormal und UIControlStateDisabled die beiden möglichen Zustände für Suchleiste sind.

Für Anwendungen, die vorher OS-Version verwenden, wird dies nicht funktionieren. Sie müssen möglicherweise eine Kategorie unter UISearchbar erstellen und das Symbol ändern, indem Sie die Unteransichten auflisten.

+0

Für andere, die faul sind oder eine weitere Erklärung wünschen (zum Beispiel dass dies eine Methode für die UISearchBar ist): '[self.searchController.searchBar setImage: [UIImake imageNamed: @" YourImageHere "] forSearchBarIcon: UISearchBarIconSearch state: UIControlStateNormal ]; ' oder wo auch immer Sie Ihre Suche Controller/bar haben – gadu

-2

Probieren Sie alle Subviews aus ... iOS unabhängig.

for (id obj in _SearchBar.subviews) { 
    NSLog(@"%@", obj); 

    if ([obj isKindOfClass:[UIImage class]]) { 
    NSLog(@"probably found..."); 

    UIImage *img = obj; 
    [img setImage....]; 
    } 
} 
0

Verwenden

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

Wenn Sie wollen einfach nur die Farbe des Symbols Standardvergrößerungs ändern, können Sie ein Bild, das Template-Modus zu verwenden und legen Sie dann die tintColor der Bildansicht.

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##>}]; 
} 
+0

Der imageWithRenderingMode war der Schlüssel. Verpasste es auf den ersten Blick! –

2

Für Swift: -

UISearchBar.appearance().setImage(UIImage(named: "new_search_icon"), forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal) 
Verwandte Themen