2015-07-03 121 views
12

我正在尝试构建类似于Twitter个人资料页面的页面。看起来他们正在使用基本的UITableView。顶级配置文件只是tableHeaderView。这些标签是SectionRowHeader中的一个UISegmentedControl,因此它在滚动时粘到顶部。推文只是该部分内的单元格。如果切换标签,他们似乎只是更改底层数据并重新加载表格。Twitter iOS个人资料页面配置

但是,如果你的页面玩,你会发现,改变标签会保持以前的滚动位置。如果您滚动到一个选项卡的顶部,那么当然另一个选项卡必须滚动到顶部,否则将滚动到标题下方。另外,如果仔细观察,一旦开始滚动,底部部分(推文)就会拥有自己的滚动条。所以它似乎是它自己的tableview。那么这是主页面单元格内的一个新的tableview吗?如果这就是他们正在做的事情,那么他们之间的滚动是无缝的。您可以将底部向上滚动,并且只有在将标签固定到顶部时,才可以在其下面滚动标签。

我试图构建一个类似的结构化页面,但仍然遇到问题。理想情况下,我还希望将这些子选项卡的逻辑分解为单独的视图控制器以供重用,但此时我只想使其工作。

任何人都知道他们用来设置这样的页面的结构?

+0

在滚动视图中滚动视图?尝试通过这个http://oleb.net/blog/2014/05/scrollviews-inside-scrollviews/ – rounak

+0

但是滚动视图不能有一个部分标题,坚持顶部。因此,除非他们手动构建该逻辑,否则它是一个带有innerscrollview的tableview。但我指出了上述问题(不会无缝滚动等) – Oren

+0

@欧仁你能想出来吗? – kidsid49

回答

0

我99%肯定,他们只是调整滚动指示插图为您滚动查看表:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGFloat const visibleHeaderHeight = 0.0; // your logic here 
    UIEdgeInsets const insets = UIEdgeInsetsMake(visibleHeaderHeight, 0.0, 0.0, 0.0); 

    self.scrollView. scrollIndicatorInsets = insets; 
} 

而且我敢肯定,他们用的是分组样式表视图,由于切片,所以你需要自己构建粘性头。不过,您也可以在-scrollViewDidScroll:中这样做。


如果你想打破的标签为单独的视图控制器,我建议以下设置:

  • 有管理包含的标签
  • 使用UIViewController遏制头视图容器视图控制器插入主动视图控制器
  • 订阅活动视图控制器的滚动视图的contentOffset并相应地调整滚动指示符插入和粘滞标题y位置
+0

如果他们只是设置插入,但他们如何将滚动和速度从一个滚动视图传递到下一个?尝试快速滚动顶部标题部分。你会注意到是滚动,然后一旦标签卡住底部继续滚动。它的行为就好像它是单个滚动视图一样。 – Oren

+0

它们只有一个滚动视图,并在滚动事件中重新定位标题以使其看起来很粘。 –

+0

我也尝试过这种设置,只有一个滚动视图并用内容插入推送推文的问题在于,标题要么位于滚动视图之后(因此不可点击),要么位于滚动视图之上(因此会干扰滚动手势)。如果它是一个单一的tableview,我不认为每个单独的标签的滚动位置将被保持,所以他们会手动持续该信息?这种方法也会使这个页面非常复杂,很难维持我的想法。 – Oren

相关问题