web-dev-qa-db-ja.com

UISearchbarの左側にある画像を削除する

UISearchbarの左側にある画像を削除して、新しい画像を追加できますか?

26
a111

IOS 5.0以降では、を使用して検索バーの画像をカスタマイズできます

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

uISearchBarの特定のインスタンスで、またはUIAppearanceプロキシを使用して多数にわたって。

40
Nick Toumpelis

アイコンを完全に削除するには、次のコード行を使用できます。

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

迅速:

// 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)
11
Jeff
// 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;
    }

これは虫眼鏡を隠します。うまく機能します。

11
Rostyslav

Swift 2.0ではこれを行います:

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

IOS 7? のUISearchBarで位置を変更したり拡大鏡アイコンを非表示にする方法

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setLeftViewMode:UITextFieldViewModeNever];
6
Shankar Shinde

またはSwift 4.0では単純なワンライナー:

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

注:これにより、UITextFields内に含まれるすべてのUISearchBarsから左側のアイコンが削除されます。

5
Wolfshead

Swift 4ソリューション

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

検索バーのアイコンを1x1の透明な画像に置き換え、テキストの位置をオフセットします

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

Swift 4ソリューション:

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

おそらく左側のギャップも調整する必要があります。

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

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;
    }
}
2
Or Arbel

このコードを使用して、検索バーのアイコンを非表示にします:-

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

SearchIcon.jpgの名前で透明な画像を撮ると、アイコンがその作業を非表示にします

1
Tester

画像を簡単に削除することはできませんが、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];

覚えておいてください-人生は不正行為です;)...

画像はピクセル単位で完全に位置合わせされている(ピクセルで再生)か、元の画像を非表示にする必要があるが、検索バーの残りの部分に干渉しない新しい画像の背景が白である必要があります(使用するだけの場合)画像全体の背景が白の場合、左隅が背景に干渉します)。

0
joshis

特定のUISearchBarインスタンスの場合。

Objective-C:

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

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

ios6には、少なくとも[searchbar setImage:<#(UIImage *)#> forSearchBarIcon:<#(UISearchBarIcon)#> state:<#(UIControlState)#>]があります。

プロパティuは設定できます:)

0
Pedroinpeace

使用できます

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