固定UIScrollView的子视图,而其他子视图可滚动

时间:2011-01-27 15:07:35

标签: objective-c ios uiscrollview

我想制作一个视图,其中三个子视图堆叠在一起,中间子视图可滚动,其他子视图固定。

如何以编程方式实现此目标?我试过了

  • 将根视图的内容大小设置为可滚动视图的大小,但这会使所有视图滚动。

- 设置中间子视图的内容大小而不设置根视图的任何属性,但这会使所有视图都不可滚动。

请帮忙。我是iOS的新手。

提前致谢

3 个答案:

答案 0 :(得分:25)

您可以使用scrollViewDidScroll:上的UIScrollView委托回调来调整视图的位置。在回调中,获取滚动视图的contentOffset并使用它来设置固定视图的位置。

例如,如果希望固定视图始终从滚动视图顶部保持100像素,则将其初始帧设置为(0,100,宽度,高度),然后在回调中将帧设置为(0 ,contentOffset.y + 100,宽度,高度)。

结果是子视图将显示为固定在给定高度。

答案 1 :(得分:3)

如果您的UIScrollView具有超级视图(即容器视图),则可以将“固定”视图添加为超级视图的子视图而不是UIScrollView。您只需计算一次帧坐标。

答案 2 :(得分:1)

您可以将子视图从UIScrollView移动到scrollview的超级视图,如:

将按钮放置/设置在滚动视图上(不在滚动视图内),如此快照中所示。并且还针对滚动视图的超级视图设置按钮约束(位置)。

enter image description here

这是参考。每个视图相对于彼此的位置层次结构的快照。

enter image description here