2010-02-07 29 views
7

Nhiều tìm kiếm bảng tôi thấy thực sự mờ (thay đổi alpha?) Của tableView thực tế khi thanh tìm kiếm được tập trung. Tôi đang cố gắng thực hiện điều này.UITableXem làm thế nào để "làm mờ" bảng thực tế khi UISearchbar được tập trung?

Khi tôi quá tải

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 

Tôi cố gắng để làm một cái gì đó giống như

self.tableView.alpha = .5f 

Nhưng nó đang thay đổi alpha của Searchbar thực tế (nếu tôi có Searchbar ngày của riêng mình) hoặc thay đổi alpha của toàn bộ bảng (bao gồm cả searchBar) nếu tôi có searchBar bên dưới bảngView trong IB.

Tôi đang làm gì sai ở đây. Làm thế nào tôi có thể chỉ cần Dim bảng và không phải tất cả mọi thứ.

Tôi đoán những gì tôi thực sự không hiểu là làm thế nào tất cả các công cụ này được xếp lớp trên màn hình.

EDIT: Ứng dụng danh bạ là ví dụ điển hình về những gì tôi đang cố gắng thực hiện.

Trả lời

10

Hầu hết các ứng dụng như vậy chỉ cần ném UIView nền đen lên đầu bảng và làm mờ nó (thành alpha là 0,5 hoặc bất kỳ thứ gì) khi thanh tìm kiếm tăng tiêu điểm.

+0

Bạn có thể đăng một số mã ví dụ nhanh không? –

+4

[UIView beginAnimations: nil context: NULL]; [UIView setAnimationDuration: 0.5f]; UIView * blackView = [[Phân bổ UIView] initWithFrame: CGRectMake (cái gì đó)]; [myTableView addSubview: blackView]; [UIView commitAnimations]; –

2

Nếu bạn sử dụng UISearchDisplayController, bạn sẽ nhận được hành vi này miễn phí.

0

Vì iOS 8 (và tối đa iOS 9.2), bạn sẽ sử dụng UISearchController. Thật không may, hiện tại người xây dựng giao diện chỉ hỗ trợ UISearchDisplayController. Vì vậy, đây là cách thêm nó theo chương trình vào bộ điều khiển xem bảng của bạn, bao gồm cả hiệu ứng mờ:

let searchController = UISearchController(searchResultsController: nil) 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Use the current view controller to update the search results: 
    self.searchController.searchResultsUpdater = self 
    self.searchController.dimsBackgroundDuringPresentation = true 
    self.tableView.tableHeaderView = searchController.searchBar 
} 
Các vấn đề liên quan