4

我在使用 iOS 7 时遇到问题。

编码

[searchBar setImage:[UIImage imageNamed:@"icon_search"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];

在 iOS 6 和 iOS 7 上带来了不同的图标大小。

图像大小为 29x29 和 58x58@2x,在 iOS 6 下可以正常显示,但在 iOS 7 中它会小两倍甚至更多倍。

可能是什么问题?谢谢!

4

4 回答 4

6

这似乎对我有用:

UIImage* image = [UIImage imageNamed:@"icon_search"];
[[UIImageView appearanceWhenContainedIn:[UISearchBar class], nil] setBounds:CGRectMake(0, 0, image.size.width, image.size.height)];
于 2014-05-27T13:45:44.823 回答
6

要自定义UISearchBarIconSearch,您需要以下代码:

[yourSearchBar setImage:[UIImage imageNamed: @"yourImage.png"]
           forSearchBarIcon:UISearchBarIconSearch
                      state:UIControlStateNormal];

要正确更改图标,分辨率图像必须准确:@2x 为 14x14,@2x 为 28x28,@3x 为 42x42

我希望这有帮助 :)

于 2015-10-02T21:57:14.090 回答
2

在 iOS 7 中遇到 UISearchBar 的一些问题后,由于占位符文本对齐,我决定切换到 UITextField。

但我仍然设法通过设置 UISearchBar 的图像和它的文本字段来让它工作。

UITextField *textfieldField = [searchBar valueForKey:@"_searchField"];
[searchBar setImage:[UIImage imageNamed:@"icon_search"] 
           forSearchBarIcon:UISearchBarIconSearch    
           state:UIControlStateNormal];
UIImage *whatSearchImage = [UIImage imageNamed:@"icon_search.png"];
UIImageView *whatSearchView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 29, 29)];
whatSearchView.image = whatSearchImage;
textfield.leftViewMode = UITextFieldViewModeAlways;
textfield.leftView = whatSearchView;

有趣的是,如果您不为 UISearchBarIcon 设置图像,它将使用 Apple 的默认图像,但会使其变大。

我还想看看是否有人为此找到了更好的解决方案。

于 2013-11-12T12:24:16.213 回答
0

我遇到了同样的问题,然后我将搜索图标的大小缩小了,现在一切正常。

玩图标大小。

例如,我将视网膜图像的大小从 38x38 更改为 30x30,现在它可以完美运行了。可能 iOS 会检查大小,如果不合适,它会使用视网膜非视网膜图像代替

于 2014-07-12T15:01:23.630 回答