Sie diesen Effekt erreichen kann ganz einfach durch eine Subview der Kopfsicht Hinzufügen und Einstellen seiner frame
oder transform
, wenn der Tabellenansicht über die obere gescrollt wird, das heißt die y
Komponente seiner contentOffset
negativ wird.
Beispiel (in einer UITableViewController
Unterklasse):
- (void)viewDidLoad
{
[super viewDidLoad];
CGFloat headerHeight = 64.0f;
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, headerHeight)];
UIView *headerContentView = [[UIView alloc] initWithFrame:headerView.bounds];
headerContentView.backgroundColor = [UIColor greenColor];
headerContentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[headerView addSubview:headerContentView];
self.tableView.tableHeaderView = headerView;
}
//Note: UITableView is a subclass of UIScrollView, so we
// can use UIScrollViewDelegate methods.
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat offsetY = scrollView.contentOffset.y;
UIView *headerContentView = self.tableView.tableHeaderView.subviews[0];
headerContentView.transform = CGAffineTransformMakeTranslation(0, MIN(offsetY, 0));
}
(es einfach zu halten, ich habe gerade in scrollViewDidScroll:
die erste subview der tatsächlichen Kopfansicht verwendet, mögen Sie vielleicht für die eine Eigenschaft verwenden, stattdessen.)
Wenn Sie "Bounce" sagen, meinen Sie, scrollen Sie nach oben/unten an den Headern vorbei? – Aaron
Grundsätzlich, wenn ich nach unten scrolle, Header bleibt gesetzt. Wenn ich nach oben scrolle, verschwindet der Header. Das ist der TableHeaderView – KVISH
OK - Ich habe die Event-Tabellenansicht der Facebook-App ausgecheckt. Es sieht so aus, als hätte es das Standardverhalten. Wie viele Abschnitte und Zeilen in diesen Abschnitten haben Sie in Ihrer Tabellenansicht? Vielleicht haben Sie nicht genug, um den gewünschten Effekt zu erzielen? – Aaron