2010-02-07 2 views
7

Viele der Tabellensuchen, die ich sehe, werden tatsächlich abgeblendet (Änderung Alpha?) Der tatsächlichen TableView, wenn die Suchleiste fokussiert wird. Ich versuche das zu implementieren.UITableView, wie "dim" die tatsächliche Tabelle, wenn UISearchbar den Fokus erhält?

Wenn ich überlasten

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 

Ich versuche, so etwas wie

self.tableView.alpha = .5f 

Aber es verändert die Alpha des tatsächlichen SearchBar zu tun (wenn ich SearchBar auf eigene haben) oder das Ändern der Alpha der gesamten Tabelle (einschließlich searchBar), wenn ich searchBar unterhalb der tableView in IB habe.

Was mache ich hier falsch? Wie kann ich nur den Tisch abmildern und nicht alles.

Ich denke, was ich wirklich nicht verstehen kann ist, wie all das Zeug auf dem Bildschirm geschichtet wird.

EDIT: Die Kontakte-Anwendung ist ein gutes Beispiel für das, was ich versuche zu tun.

Antwort

10

Die meisten solcher Apps werfen einfach einen schwarzen Hintergrund UIView auf den Tisch und verblassen ihn (zu einem Alpha von .5 oder was auch immer), wenn der Suchbalken den Fokus erhält.

+0

Können Sie einige schnelle Beispielcode? –

+4

[UIView beginAnimations: Nullkontext: NULL]; [UIView setAnimationDuration: 0.5f]; UIView * blackView = [[UIView-Zuordnung] initWithFrame: CGRectMake (etwas)]; [myTableView addSubview: blackView]; [UIView commitAnimations]; –

2

Wenn Sie UISearchDisplayController verwenden, erhalten Sie dieses Verhalten kostenlos.

0

Seit iOS 8 (und bis mindestens iOS 9.2) würden Sie eine UISearchController verwenden. Leider unterstützt der Interface Builder derzeit nur die jetzt veraltete Version UISearchDisplayController. Also, dies ist, wie Sie es programmatisch zu Ihrem Tabellenansicht-Controller hinzufügen, einschließlich der Dim-Effekt:

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 
} 
Verwandte Themen