自定義UISearchBar的「取消按鈕」

需求: UISearchBar的取消按鈕,沒有公共方法能夠修改它的屬性。但咱們仍能夠經過遍歷UISearchBar的子控件來設置該"取消按鈕"。spa

效果: 將UISearchBar的取消按鈕中的"取消"文字,更改成"搜索"。orm

代碼以下:繼承

- (void)setSearchBar:(UISearchBar *)searchBar{it

      UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 44)];io

     [searchBar setShowsCancelButton:YES];   //顯示右側取消按鈕(必須)ast

  /*1. 遍歷UISearchBar的子控件, 在"二級子控件"中找到UINavgationButton, 也就是咱們要更改的"取消按鈕";class

   2. 獲得UINagationBar(繼承自UIButton), 並修改它的屬性;搜索

  */遍歷

     for (UIView *view in [[searchBar.subviews lastObject] subviews]) {方法

         if ([view isKindOfClass:[UIButton class]]) {

             UIButton *cancelBtn = (UIButton *)view;

             [cancelBtn setTitle:@"搜索" forState:UIControlStateNormal]; //關鍵步驟

        }

    }

    [self.view addSubview:searchBar];

}

效果: 

 

感謝 Stack Overflow的Jason的分享。

相關文章
相關標籤/搜索