在UISearchBar左侧添加按钮

Eri*_*son 29 iphone uisearchbar

我正在撕裂我的头发.我的客户想要在搜索栏的左侧添加一个按钮,如下例所示:

替代文字http://www.erik.co.uk/images/IMG_0008.PNG

但我无法弄清楚该怎么做.Apple似乎没有提供任何记录方法来向UISearchBar添加自定义按钮,更不用说在搜索栏的左侧.

我已经尝试在Interface Builder中添加一个UIToolbar,左边有一个按钮,但我找不到任何样式的组合,两者排列正确,给人的印象是它们是一个.从下图中可以看出,垂直对齐中总有一个像素差异:

替代文字http://www.erik.co.uk/images/verticalalignment.png

我已经四处寻找,但是找不到答案,但正如我们从截图中看到的那样,它必须是可能的!

预先感谢您的帮助.

埃里克

ken*_*ytm 39

使用导航栏而不是工具栏.将搜索栏设置为导航栏的标题视图.

Interface Builder:

截图1

结果:

截图2

  • 这似乎不适用于Autolayout."执行-layoutSubviews后仍需要自动布局.UINavigationBar的-layoutSubviews实现需要调用super." (2认同)

Yar*_*sim 18

您可以替换书签图像,并在必要时调整其偏移量.
例如:

[self.searchDisplayController.searchBar setImage:[UIImage imageNamed:@"plus2"] forSearchBarIcon:UISearchBarIconBookmark state:UIControlStateNormal];
[self.searchDisplayController.searchBar setPositionAdjustment:UIOffsetMake(-10, 0) forSearchBarIcon:UISearchBarIconBookmark];
Run Code Online (Sandbox Code Playgroud)

在委托方法中处理按钮事件:

- (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar

这是它的样子:

带有自定义书签图像的白色UISearchBar


Mik*_*nov 8

正如KennyTM注意到的那样,第一个解决方案是使用UINavigationBar而不是代替UIToolbar.但是你可能不满意导航栏,就像在我的情况下,我需要使用3个按钮(导航栏只允许使用2个按钮) - 见左图.我就这样做了:

  1. 使用Toolbar3个按钮并Flexible Space Bar Button Item放置在应放置搜索栏的位置.
  2. 将搜索栏放在工具栏上(不在其中).要执行此操作Interface Builder,请不要拖放工具栏上的搜索栏.相反,将它放在附近的某个地方,然后使用键盘上的箭头键(或通过更改X和Y位置Interface Builder)将其移动到位.
  3. 搜索栏下方有黑线(见右图).为了隐藏它,我在其上放置了一个高度1px和白色背景的视图.

对我来说看起来有点脏,所以如果你有更好的解决方案,请告诉我.

截图