1. 程式人生 > >iOS開發設定UISearchBar的輸入背景框、提示文字等

iOS開發設定UISearchBar的輸入背景框、提示文字等

開發中經常需要用到搜尋框,當使用系統搜尋框的時候,可以改變搜尋框的背景圖片、提示文字顏色、取消按鈕字型顏色、放大鏡圖片等,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];

效果圖
這裡寫圖片描述
這裡寫圖片描述
帶右側按鈕
這裡寫圖片描述
這裡寫圖片描述