5

我正在构建一个带有社交内容流的应用程序,并试图了解 instagram 如何在应用程序中流式传输。所以基本上是一个顶部标题,它从屏幕上滚动出来,但在它和内容之间反弹。我可以使顶部标题滚动到屏幕外,并且可以使视图不反弹,但我想使用 Pull 进行刷新,最终会超出“人造”导航栏UIView。我知道一个普通的导航栏会产生这个,但这个滚动的导航栏是另一回事。

目前我有UITableview一个UIView上面有一个UITableViewCell,一切都很好,除了反弹发生在上面UIView。我想我需要得到UIView上面的内容,UITableView但是在 UITableViewController 中,情节提要不允许我将UIView上面的UITableView.

有任何想法吗???

谢谢

4

1 回答 1

5

好吧,我终于让这一切正常工作了,所以我想我会为每个人发布答案。

基本上我设置了一个标准的导航栏,然后scrollViewDidScroll我得到滚动的偏移量并根据它改变框架。这似乎工作得很好,我的 scrollViewDidScroll 方法见下文。

- (void)scrollViewDidScroll:(UIScrollView *)sender {

    //Initializing the views and the new frame sizes.
    UINavigationBar *navbar = self.navigationController.navigationBar;
    UIView *tableView = self.view;

    CGRect navBarFrame = self.navigationController.navigationBar.frame;
    CGRect tableFrame = self.view.frame;

    //changing the origin.y based on the current scroll view.
    //Adding +20 for the Status Bar since the offset is tied into that.
    navBarFrame.origin.y = MIN(0, (sender.contentOffset.y * -1)) +20;
    navbar.frame = navBarFrame;

    tableFrame.origin.y = MIN(0,MAX(-44,(sender.contentOffset.y * -1)));
    tableView.frame = tableFrame;

}

Also you will want to make your TableView 44px taller to compensate for the scrolling otherwise your frame will not be big enough. I just did this in viewWillAppear and made the frame bigger.

于 2012-10-04T14:58:23.117 回答