2012-06-07 27 views
5

Tôi muốn để có được một cái gì đó như thế này:Nền hoặc đường viền có thể bị xóa khỏi UISearchBar không?

enter image description here

Nhưng tôi đã không thể loại bỏ nền gốc (Tôi đang sử dụng iOS5). Tuy nhiên, có vẻ như Apple đã làm nó:

enter image description here

Làm thế nào tôi có thể tạo ra những gì mà tôi muốn? Hoặc, không có sự lựa chọn và chỉ có thay thế tôi có là tùy chỉnh một UITextField?

Cảm ơn các đề xuất và ý tưởng!

EDIT: Sau khi trả lời đầu tiên, đây là những gì tôi nhận:

enter image description here

Có ai làm thế nào tôi có thể loại bỏ nền bên trong trắng mà không làm cho tất cả bán trong suốt thay đổi giá trị alpha của nó thành phần? BTW, tôi có thể thay đổi màu trắng bằng màu đen không?

Trả lời

7

Hãy thử mã này, Nó làm việc cho tôi

for (id img in yourSearchBar.subviews) { 
     if ([img isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) { 
      [img removeFromSuperview];  
     } 
    } 

Trong mã yourSearchBar trên là thanh tìm kiếm từ mà bạn muốn loại bỏ nền, Và vòng lặp for đang tìm kiếm các hình nền của UISearchBar

+0

Cám ơn trả lời. Hôm qua tôi đã cố gắng và không làm việc, tuy nhiên hôm nay đang làm việc. Bạn có biết làm thế nào tôi có thể loại bỏ nền bên trong màu trắng? Tôi đã chỉnh sửa câu hỏi với thông tin này. – Ricardo

+1

thiếu dòng này để làm cho nó hoạt động hoàn toàn: [[[searchBar subviews] objectAtIndex: 0] setHidden: YES]; từ Hassan Shahzad bên dưới. – David

+0

Câu trả lời tuyệt vời đã cứu mạng tôi, cảm ơn một triệu –

6

Bạn thực sự nên sử dụng giao thức hiển thị. Bạn có thể thay đổi nó cho một trường hợp duy nhất của UISearchBar,

UIImage *searchBg = [UIImage imageNamed:@"search_bar.png"]; 
[searchBar setBackgroundImage:searchBg]; 

hoặc nếu bạn có nhiều thanh tìm kiếm trên cảnh khác nhau này sẽ theme mọi trường hợp (nhưng gọi nó là một nơi nhạy cảm như appdelegate để đảm bảo các thanh đều thiết lập một cách chính xác trước khi bạn nhìn thấy ai trong số họ

UIImage *searchBg = [UIImage imageNamed:@"search_bar.png"]; 
[[UISearchBar appearance] setBackgroundImage:searchBg]; 

cập nhật:. OK, để thay đổi nền của một thanh tìm kiếm, bạn nên sử dụng một trong những điều sau đây,

đơn thể hiện của Searchbar:

[searchBar setSearchFieldBackgroundImage:searchBg forState:UIControlStateNormal]; 

Tất cả các trường hợp của UISearchBars:

[[UISearchBar appearance] setSearchFieldBackgroundImage:searchBg forState:UIControlStateNormal]; 

Hope this helps.

1

Trong iOS 7 bạn chỉ có thể thiết lập:

searchBar.barTintColor = [UIColor clearColor]; 
Các vấn đề liên quan