2011-08-29 43 views
7

Tôi đang cố gắng thay đổi màu nền của trường nhập của UISearchBar.Đó là chế độ xem làm tròn nơi bạn nhập văn bản để tìm kiếm, màu mặc định là màu trắng. Tôi muốn thay đổi nó thành màu xámUISearchBar: thay đổi màu nền của trường nhập

tôi đã cố gắng:

for (UIView *subView in searchBar.subviews) { 
    if ([subView isKindOfClass:NSClassFromString(@"UITextField")]) { 
     UITextField *textField = (UITextField *)subView; 
     [textField setBackgroundColor:[UIColor grayColor]]; 
    } 

Nhưng nó không hoạt động :(

Tôi cũng đã cố gắng để chèn một cái nhìn hình ảnh để TextField nhưng có vẻ như quan điểm tròn tách biệt với TextField Vì vậy, bất kỳ manh mối

+0

u nên tạo thanh tìm kiếm trong mã không có trong interfacebuilder.i có cùng vấn đề khi tạo từ IB.so u se mã để tạo thanh tìm kiếm –

+0

cảm ơn phản hồi của bạn. Tôi sẽ thử nó – muc

+0

AHHHH, tôi đã làm nó! Tôi thiết lập textField.background với một hình ảnh và nó đã hoạt động, yay! – muc

Trả lời

8

Nhìn vào chức năng:.?

[searchBar setSearchFieldBackgroundImage:[UIImage imageNamed:@"search_bar"] forState:UIControlStateNormal]; 
8

=)

for (UIView *subView in _searchBar.subviews) { 
    for(id field in subView.subviews){ 
     if ([field isKindOfClass:[UITextField class]]) { 
      UITextField *textField = (UITextField *)field; 
      [textField setBackgroundColor:[UIColor grayColor]]; 
     } 
    } 
} 
2

Trong Swift 2 và iOS 9 bạn có thể gọi:

UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).backgroundColor = UIColor.darkGrey() 

Swift 3:

UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).backgroundColor = UIColor.darkGrey() 
+1

Không hoạt động với tôi – SunilG

+2

Nó sẽ không hoạt động nếu 'searchBarStyle' là' tối thiểu'. – enreas

+0

Như @enreas đã đề cập, giải pháp là do đó: http://stackoverflow.com/a/42626728/2229062 – yohannes

2

Giải pháp trong Swift 3:

if let txfSearchField = searchController.searchBar.value(forKey: "_searchField") as? UITextField { 
     txfSearchField.borderStyle = .none 
     txfSearchField.backgroundColor = .lightGray 
} 
Các vấn đề liên quan