UIScrollView 标题视图?

Posted

技术标签:

【中文标题】UIScrollView 标题视图?【英文标题】:UIScrollView header view? 【发布时间】:2014-11-15 20:04:04 【问题描述】:

我有一个控制器,它的顶部有一个 UIView 和一些按钮和标签。下面我有一个 UIScrollView 也包含内容。我希望顶部的 UIView 基本上可以工作并作为此滚动视图的标题出现,类似于 UITableViewHeader。我正在使用带有 contentOffset 的 scrollViewDidScroll 委托方法来尝试让它工作,但我似乎无法得到正确的数学。

这个想法是,当滚动视图向上滚动时,“标题”将相对于内容向上滚动。它甚至可以滚出屏幕。然后,当您向下滚动时,它将粘在滚动视图的顶部。就像我说的,与 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 离开屏幕。

【问题讨论】:

你能发布你目前所拥有的吗? @Acey 刚刚添加。 您是否希望它的行为类似于 Game Center 应用程序中的游戏屏幕,其中段控制器粘在顶部,顶部滚动到屏幕外?如果是这样,我会提供一种稍微不同的方法。 使用更容易的约束。 【参考方案1】:

这是我为与您所描述的行为相似的标头提供的解决方案:FixedHeaderTableView。

在您的情况下,您将为 visibleHeaderHeight 参数传入 0。

【讨论】:

以上是关于UIScrollView 标题视图?的主要内容,如果未能解决你的问题,请参考以下文章

UIScroll 视图未按预期工作

UIScroll 及其嵌套元素

UIScrollView 阻止我的 UIGesture 进行视图转换

使 UIScrollView 中的顶部图像在滚动视图边界上放大?

带有 AutoLayout 的 UIScrollView 灵活布局

UINavigationBar 为 UIScrollView 注册触摸