如何制作像Instagram一样的导航栏

wir*_*uzx 9 objective-c uitableview uiscrollview ios instagram

我需要实现这样的事情:

NavBar保持领先,tableView反弹

tableView必须弹跳,但不能导航栏.

我尝试了一堆不同的变种.像这样的东西:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGRect imageViewFrame = self.imageView.frame;
    CGRect tableViewFrame = self.tableView.frame;
    //ImageView - is top view(instead of NavBar)
    //defaultHeight - is default height of tableView
    imageViewFrame.origin.y = MIN(0, MAX(-scrollView.contentOffset.y, -100));
    tableViewFrame.origin.y = imageViewFrame.origin.y + 100;
    tableViewFrame.size.height = defaultHeight - imageViewFrame.origin.y;

    self.imageView.frame = imageViewFrame;
    self.tableView.frame = tableViewFrame;
}
Run Code Online (Sandbox Code Playgroud)

得到这个:

1 2

它不适合因为在Instagram中,tableView的大小不会改变(只看滚动指示器,如果tableView的大小改变了,它们也改变了)

请看滚动指示器 请看滚动指示器

此外,我尝试将View作为subView添加到tableView中,它可以工作,但不完全是我需要的.在InstagramView导航栏中,所以它也不适合.

在Facebook应用程序搜索栏中表现完全相同

在此输入图像描述

谁能帮我?

谢谢!

7us*_*sam 1

在示例代码中采用相同的方法,但不是增加桌面视图的高度,而是预先加载额外的(不可见的高度),然后通过减小框架的 y 来向上移动它。额外的高度将超出屏幕。如果内容高度不够大而无法超出屏幕,那么您不需要具有超出屏幕的高度。

在开始时添加高度 = 0 的标题,当您向下滚动时,它会增加大小,最大为 100(空标题现在将离开屏幕)。这样,当您滚动时,内容就不会被切断。