我有一个控制器,顶部有一个UIView,带有一些按钮和标签。在下面我有一个包含内容的UIScrollView。我希望顶部的UIView基本上工作并显示为此滚动视图的标题,类似于UITableViewHeader。我使用scrollViewDidScroll委托方法和contentOffset尝试让它工作,但我似乎无法得到正确的数学。
这个想法是滚动视图向上滚动"标题"将相对于内容向上滚动。它甚至可以滚动屏幕。然后当您向下滚动时,它将粘在滚动视图的顶部。就像我说的,与UITableViewHeader非常相似的功能。
任何有关为此计算数学的帮助都将非常感谢!
这是我到目前为止所做的:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGRect updatedSegmentFrame = self.segmentedControlContainerView.bounds;
CGRect updatedTableViewFrame = self.viewControllerThree.tableView.frame;
CGFloat topEdge = -scrollView.contentOffset.y;
if (topEdge >= 0) {
updatedSegmentFrame.origin.y = 0;
}
else {
updatedSegmentFrame.origin.y = -scrollView.contentOffset.y;
}
self.viewControllerThree.tableView.frame = updatedTableViewFrame;
self.segmentedControlContainerView.frame = updatedSegmentFrame;
}
此代码移动外部"标题视图"以及UIScrollView,一切都按预期工作。唯一缺少的是,当您向上滚动时,UIScrollView将需要变大以抵消屏幕上的headerView。
答案 0 :(得分:1)
以下是我为标题提供的解决方案,其行为类似于您所描述的内容:FixedHeaderTableView。
在你的情况下,你会传入0作为visibleHeaderHeight参数。