我想将UISearchBar
的{{1}}按钮更改为仅包含图像且没有文字的按钮。这是我到目前为止远离原始行为的地方
到这个
朝着正确方向迈出的一步,但问题是按钮太宽了。当我调试视图时,我可以看到左侧和右侧有11个点的按钮标签插入。 有谁知道如何使按钮符合内容大小?图像是方形的。
这是我自定义按钮的代码:
Cancel
另一个奇怪的问题是,当我关闭搜索栏并再次激活它时,按钮图像变暗(它仍然存在,我可以在调试视图时看到它),所以它看起来像这样
知道如何将图标保持为白色吗?我在下面尝试了这种方法,但没有结果:
UIBarButtonItem *barButtonAppearanceInSearchBar;
if (IOS9) {
barButtonAppearanceInSearchBar = [UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]];
} else {
barButtonAppearanceInSearchBar = [UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil];
}
barButtonAppearanceInSearchBar.image = [UIImage imageNamed:@"Close"];
barButtonAppearanceInSearchBar.title = nil;
答案 0 :(得分:4)
使用图像渲染和色调。
barButtonAppearanceInSearchBar.image = [[UIImage imageNamed:@"Close"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
barButtonAppearanceInSearchBar.tintColor = [UIColor whiteColor];
barButtonAppearanceInSearchBar.title = nil;
答案 1 :(得分:0)
这是@jamesBlake的答案的Swift 4.1版本:
func setUpSearchBar() {
let barButtonAppearanceInSearchBar: UIBarButtonItem?
barButtonAppearanceInSearchBar = UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self])
barButtonAppearanceInSearchBar?.image = UIImage(named: "Home.png")?.withRenderingMode(.alwaysTemplate)
barButtonAppearanceInSearchBar?.tintColor = UIColor.white
barButtonAppearanceInSearchBar?.title = nil
}