[英]Change UISearchBar Cancel button to icon
我想將UISearchBar
的Cancel
按鈕更改為只有圖像而沒有文本的按鈕。 這是我從原始行為到目前為止所處的位置
對此
朝着正確的方向邁出了一步,但問題是按鈕太寬了。 當我調試視圖時,我可以看到左側和右側有11個點的按鈕標簽插入。 有誰知道如何使按鈕適合內容大小? 圖像是方形的。
這是我自定義按鈕的代碼:
UIBarButtonItem *barButtonAppearanceInSearchBar;
if (IOS9) {
barButtonAppearanceInSearchBar = [UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]];
} else {
barButtonAppearanceInSearchBar = [UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil];
}
barButtonAppearanceInSearchBar.image = [UIImage imageNamed:@"Close"];
barButtonAppearanceInSearchBar.title = nil;
另一個奇怪的問題是,當我關閉搜索欄並再次激活它時,按鈕圖像變暗(它仍然存在,我可以在調試視圖時看到它),所以它看起來像這樣
知道如何保持圖標白色嗎? 我在下面嘗試了這種方法,但沒有結果:
- (void)willPresentSearchController:(UISearchController *)searchController {
searchController.searchBar.tintColor = [UIColor whiteColor];
}
使用圖像渲染和色調顏色。
barButtonAppearanceInSearchBar.image = [[UIImage imageNamed:@"Close"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
barButtonAppearanceInSearchBar.tintColor = [UIColor whiteColor];
barButtonAppearanceInSearchBar.title = nil;
這是@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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.