Twitter iOS 个人资料页面配置
Posted
技术标签:
【中文标题】Twitter iOS 个人资料页面配置【英文标题】:Twitter iOS Profile Page Configuration 【发布时间】:2015-07-03 18:22:17 【问题描述】:我正在尝试构建一个类似于 Twitter 个人资料页面的页面。看起来他们正在使用基本的UITableView
。最上面的配置文件只是 tableHeaderView。选项卡是 SectionRowHeader 内的 UISegmentedControl
,因此在滚动时它会粘在顶部。推文只是该部分内的单元格。如果您切换选项卡,它们似乎只是在更改基础数据并重新加载表格。
但是,如果您使用该页面,您会注意到更改选项卡会保留之前的滚动位置。如果您在一个选项卡上滚动回顶部,那么当然另一个选项卡必须滚动到顶部,否则它将滚动到标题下方。此外,如果您仔细观察,一旦您开始滚动,底部(推文)就会有自己的滚动条。所以看起来那是它自己的tableview。那么这会是主页单元格内的新表格视图吗?如果这就是他们正在做的事情,那么他们之间的滚动是无缝的。您可以向上滚动底部,并且只有将选项卡固定到顶部后,推文才会在其下方滚动。
我正在尝试构建一个类似的结构化页面,但一直遇到问题。理想情况下,我还希望将这些子选项卡的逻辑分解为单独的视图控制器以供重用,但此时我只想让它工作。
有人知道他们用来设置这样一个页面的结构吗?
【问题讨论】:
在滚动视图中滚动视图?尝试通过这个oleb.net/blog/2014/05/scrollviews-inside-scrollviews 但是滚动视图不能有一个固定在顶部的部分标题。因此,除非他们手动构建该逻辑,否则它是一个带有内部滚动视图的表格视图。但我指出了上面的问题(不能无缝滚动等) @Oren 你知道了吗? 很遗憾没有。我的猜测是他们构建了一些非常定制的东西来获得这个基本功能。点赞,也许有人会找到并回答。 我想做一些类似的家伙,你找到答案了吗?....其实我只是想要一个可触摸的标题... 【参考方案1】:我 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 位置
【讨论】:
如果他们只是设置插图,他们如何将滚动和速度从一个滚动视图传递到下一个?尝试快速滚动顶部标题部分。您会注意到滚动,然后一旦标签卡住,底部就会继续滚动。它就像一个单独的滚动视图。 他们只有一个滚动视图,并在滚动事件上重新定位标题以使其看起来具有粘性。 我也尝试了这种设置,只有一个滚动视图并将推文与内容插入一起向下推的问题是标题要么在滚动视图后面(因此不可点击)或在它上面(因此会干扰滚动手势)。如果它是一个单独的表格视图,我认为不会保留每个单独的选项卡的滚动位置,所以他们会手动保留该信息吗?我认为这种方法也会使这个页面变得非常复杂且难以维护。 @Oren 您可以让容器管理标题视图,但将其“插入”到其子视图控制器的视图层次结构中。这样它可以是子视图控制器的 subview 并且用户交互应该可以正常工作。然后子视图控制器将负责使标题在滚动时粘在顶部。 对于它的价值,他们绝对不仅仅是设置滚动指示器。您可以判断,因为如果您将表格拉下,滚动指示器永远不会高于选项卡。如果整个页面是一个调整了指标的滚动视图,那么它们会在标签上方反弹。【参考方案2】:我试着解释了一下here。
经过长时间的调查,这就是我实现 twitter 的方式 个人资料行为。
UnderlayScrollView MasterScrollView 标题视图控制器 底部视图控制器 PagerTabItems [CollectionView] UIPagerController 或任何其他水平滚动条(Parchment、XLPagerTabStrip)。UnderlayScrollView 负责控制滚动手势。 它的 contentoffset 用于调整内滚动 contentOffsets。 底层卷轴的内容大小与主卷轴的相同 内容大小。
更多信息请参见 github 上的源代码。 click
【讨论】:
以上是关于Twitter iOS 个人资料页面配置的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 中从 Twitter 获取用户个人资料详细信息(尤其是电子邮件地址)
在 iOS 上,Twitter 是如何在滚动浏览时制作个人资料横幅动画的?
如何在 iOS 中使用 Twitter Kit/Fabric 从登录用户获取用户个人资料图片