2012-09-25 13 views
5

Ich versuche, eine UIView über einem UITableView hinzuzufügen. Die Absicht ist, dass, wenn der Benutzer den Inhalt herunterzieht (wie es normalerweise bei einem Pull-to-Refresh der Fall wäre), anstelle des UITableView-Hintergrunds, der UIView über der Tabelle wachsen würde, um an der obersten UITableViewCell zu hängen, die nach unten rutscht . Wenn der Benutzer den anderen Weg scrollt (der Inhalt steigt), verschwindet die UIView, als wäre es nur die oberste UITableViewCell.Growing Header in UITableView als Benutzer zieht

Sie können diese Implementierung in Path (Pulldown-Timeline und Top-Profilbild erweitert, example at 0:15) und die neue Facebook-App Checkin (mit der Karte wächst über der Liste der Orte in der Nähe) sehen.

Nicht sicher der beste Weg, um darüber zu gehen. Ich denke, um einen ähnlichen Effekt zu erzielen, müsste man die UIView als erste Zelle haben. Aber this question hat mich ein bisschen besorgt über versucht, die Höhe der Zelle beim Scrollen Größe zu ändern. Theoretisch muss die Größenänderung nur geschehen, wenn sie heruntergezogen werden, nicht nach oben drücken, wenn es nur die oberste UITableViewCell ist.

Bearbeiten: Aktueller Code - mit Vorschlag aus Rummad Ich bin ein Hinzufügen eines Keepath-Beobachter auf der Tabellenansicht für ContentOffset und Größe der Zelle Höhe darauf basierend, aber es springt überall.

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ 
    if (self.tableView == (UITableView*)object) { 
     if ([keyPath isEqualToString:@"contentOffset"]) { 
      CGPoint scrollLoc = self.tableView.contentOffset; 
      if (scrollLoc.y < 0) { 
       NSLog(@"offset:%@", NSStringFromCGPoint(scrollLoc)); 
       headerSize = 100 - scrollLoc.y; 
       [self.tableView beginUpdates]; 
       [self.tableView endUpdates]; 
      } 
     } 
    } 
} 
+0

Probieren Sie einen anderen Blick ins Innere des Kopf setzen und Stretching. Ich hatte das gleiche Sprungproblem, als ich versuchte, das Rect der Header-Ansicht zu ändern. – Stuart

Antwort

12

Eigentlich sieht es so aus, als gäbe es ein paar Bibliotheken da draußen, und die Verwendung der ersten Tabellenzelle ist nicht der richtige Weg. "Parallax" schien der magische google Begriff zu sein.

http://rowboatrevolution.com/2012/02/uitableview-parallax-background-a-la-path/ https://github.com/Rheeseyb/RBParallaxTableViewController

+0

Das OP fragt nicht nach dem magischen Google-Begriff "Parallax", sondern nach einem wachsenden Header, der an der Spitze bleibt und mit tableView wächst (down) –

4

In Ihrem viewDidScroll: Delegatmethode die contentOffset für Ihre UITableView verfolgen. Sie können dann den Rahmen des UIView entsprechend einstellen.

+0

Möchtest du hier einen Beispielcode posten –

Verwandte Themen