簡體   English   中英

將UISearchBar取消按鈕更改為圖標

[英]Change UISearchBar Cancel button to icon

我想將UISearchBarCancel按鈕更改為只有圖像而沒有文本的按鈕。 這是我從原始行為到目前為止所處的位置

在此輸入圖像描述

對此

在此輸入圖像描述

朝着正確的方向邁出了一步,但問題是按鈕太寬了。 當我調試視圖時,我可以看到左側和右側有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM