如何复制Chrome应用的地址栏行为

时间:2013-09-24 20:16:34

标签: ios objective-c

有人知道是否有某些项目或某些内容复制了iOS中Chrome应用的地址栏行为?也就是说,当向下滚动时,它会隐藏,如果我在桌子的中间,并且我向上滚动,则会出现地址栏。

谢谢!

1 个答案:

答案 0 :(得分:0)

大多数导航隐藏的工作方式是通过从滚动/表格/网页视图中侦听滚动事件并调整导航栏的中心。

您可以使视图控制器成为相关视图的委托,并应用某种程度的逻辑:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat scrollOffset = scrollView.contentOffset.y;
    CGPoint navigationBarCenter = self.navigationController.navigationBar.center;

    // A bunch of calculations
    navigationBarCenter.y = newlyCalculatedPosition;

    self.navigationController.navigationBar.center = navigationBarCenter;
}

对于这种特定行为,他们正在计算从滚动开始的位置并说“如果我向下滚动,导航栏中心应该是其原始中心减去滚动的距离。如果我向上滚动,导航栏中心应该从屏幕外增加到正常位置。

然后,您必须决定滚动结束时的操作以及导航栏部分在屏幕上。你是展示全部还是仅展示一部分?

在iOS7之前,您还必须担心滚动视图的框架。 iOS7的默认行为是让视图控制器扩展到设备的完整大小,而iOS6的默认行为是填充导航栏和工具栏之间的空间。您可以使用半透明导航栏解决此问题,但需要调整内容并滚动指示符插入内容,以便在不滚动时将内容限制在内部区域。