UISearchbar
の左側にある画像を削除して、新しい画像を追加できますか?
IOS 5.0以降では、を使用して検索バーの画像をカスタマイズできます
- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state
uISearchBarの特定のインスタンスで、またはUIAppearance
プロキシを使用して多数にわたって。
アイコンを完全に削除するには、次のコード行を使用できます。
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)
// 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;
}
これは虫眼鏡を隠します。うまく機能します。
Swift 2.0ではこれを行います:
let textFieldInsideSearchBar = self.searchBar.valueForKey("searchField") as! UITextField
textFieldInsideSearchBar.leftViewMode = UITextFieldViewMode.Never
IOS 7? のUISearchBarで位置を変更したり拡大鏡アイコンを非表示にする方法
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setLeftViewMode:UITextFieldViewModeNever];
またはSwift 4.0では単純なワンライナー:
UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).leftViewMode = .never
注:これにより、UITextFields
内に含まれるすべてのUISearchBars
から左側のアイコンが削除されます。
Swift 4ソリューション
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];
覚えておいてください-人生は不正行為です;)...
画像はピクセル単位で完全に位置合わせされている(ピクセルで再生)か、元の画像を非表示にする必要があるが、検索バーの残りの部分に干渉しない新しい画像の背景が白である必要があります(使用するだけの場合)画像全体の背景が白の場合、左隅が背景に干渉します)。
特定のUISearchBar
インスタンスの場合。
Objective-C:
// Get the inner search field.
UITextField *searchField = (UITextField *)[searchBar valueForKey:@"searchField"];
// Hide the left search icon.
[searchField setLeftViewMode:UITextFieldViewModeNever];
ios6には、少なくとも[searchbar setImage:<#(UIImage *)#> forSearchBarIcon:<#(UISearchBarIcon)#> state:<#(UIControlState)#>]
があります。
プロパティuは設定できます:)
使用できます
searchBar.setImage(UIImage(), for: .search, state: .normal)