iOS開發設定UISearchBar的輸入背景框、提示文字等
阿新 • • 發佈:2019-02-03
開發中經常需要用到搜尋框,當使用系統搜尋框的時候,可以改變搜尋框的背景圖片、提示文字顏色、取消按鈕字型顏色、放大鏡圖片等,swift程式碼如下:
//搜尋框
let searchBar = UISearchBar(frame: CGRect(x: 8, y: 0, width: self.view.frame.size.width - 16, height: 35))
searchBar.searchBarStyle = .Minimal
searchBar.placeholder = "請輸入關鍵字"
searchBar.setImage (UIImage(named: "test_sousuo"), forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal) //替換收縮放大鏡
searchBar.setImage(UIImage(named: "test_quxiao"), forSearchBarIcon: UISearchBarIcon.Clear, state: UIControlState.Normal) //輸入的時候,右側的清除按鈕
searchBar.setSearchFieldBackgroundImage (UIImage(named: "sousuokuang"), forState: UIControlState.Normal) //輸入背景框
//改變提示文字顏色
let sbTextField = searchBar.valueForKey("searchField") as? UITextField //首先取出textfield
let sbPlaceholderLabel = sbTextField?.valueForKey("placeholderLabel") as? UILabel //然後取出textField的placeHolder
sbPlaceholderLabel?.textColor = UIColor.redColor() //改變顏色
objective-c程式碼:
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 260, self.view.frame.size.width - 16, 35)];
searchBar.searchBarStyle = UISearchBarStyleMinimal;
searchBar.placeholder = @"請輸入關鍵字";
[searchBar setImage:[UIImage imageNamed:@"test_sousuo"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal]; //替換收縮放大鏡
[searchBar setImage:[UIImage imageNamed:@"test_quxiao"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal]; //輸入的時候,右側的清除按鈕
[searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"sousuokuang"] forState:UIControlStateNormal]; //輸入背景框
//改變提示文字顏色
UITextField *sbTextField = [searchBar valueForKey:@"searchField"]; //首先取出textfield
sbTextField.textColor = [UIColor blueColor]; //輸入的顏色
UILabel *sbPlaceholderLabel = [sbTextField valueForKey:@"placeholderLabel"]; //然後取出textField的placeHolder
sbPlaceholderLabel.textColor = [UIColor redColor]; //改變顏色
[self.view addSubview:searchBar];
取消按鈕,swift寫法:
//取出取消按鈕
let cancelBtn = searchBar.valueForKey("cancelButton") as? UIButton
cancelBtn?.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
objective-c寫法
//取消按鈕有顯示的時候
searchBar.showsCancelButton = YES;
UIButton *cancelBtn = [searchBar valueForKey:@"cancelButton"]; //首先取出cancelBtn
//這樣就可以隨便設定這個按鈕了
[cancelBtn setTitle:@"搜尋" forState:UIControlStateNormal];
效果圖
帶右側按鈕