究竟是什么contentOffset& ScrollView

时间:2015-10-22 17:02:36

标签: ios swift

我有两个关于ScrollView的问题。一个是我的主要问题,另一个是次要的混乱。

1. contentOffset的{​​{1}}和contentInset究竟是什么?我将在下面提供更多详情。

2.我创建了一个ScrollView,但似乎ScrollView无法向任何方向滚动。这是关于偏移的问题吗?还是插图?我将在下面提供更多详情。

问题1的详细信息:

有时ScrollView属性和contentOffset属性似乎有很多区别,但是当我尝试实现与这两个属性相关的一些函数时,我感到困惑。 我在这里做一个简单的说明。你能帮我弄清楚哪个部分是偏移的,哪个部分是插入的?

enter image description here

问题2的详细信息:

我使用以下功能添加contentInset

ScrollView

它无法滚动。它只能包含很少的东西(Buttons或TextFields ......)来填充它的大小,而不是把更多的东西放在我们看不到的地方。

关于开始设置的问题也是如此。插图?我该如何解决此问题?如果我这样做,我怎么能以编程方式将东西(按钮......)添加到未显示的位置?

我希望你能告诉我一些事情!

3 个答案:

答案 0 :(得分:47)

一些观察结果:

  • contentOffset是用户当前在滚动视图中滚动的位置。这显然会随着用户滚动而改变。您通常不会以编程方式更改此项(除非您想以编程方式在某处滚动,例如,使用按钮滚动到顶部)。

  • contentInset是滚动视图中内容在视觉上嵌入的程度(即滚动视图中的“边距”)。您通常在IB或viewDidLoad中设置一次,因为滚动视图已实例化。

  • contentSize是可滚动内容的大小。请注意,使用autolayout时,您不必手动指定,而是通过在滚动视图及其子视图之间指定的约束(以及子视图的约束和子视图之间的约束)计算。

要使滚动正常工作,它是(a)滚动视图的bounds的组合,少于任何contentInset; (b)contentSize,根据子视图的约束为你计算。

答案 1 :(得分:8)

contentOffset表示滚动视图内容的当前位置,相对于左上角的原点坐标。除非您想以编程方式调整滚动位置,否则不应以编程方式设置此值。

contentInset允许在scrollview中指定内容周围的边距。您可以按编程方式指定边距:

scrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 7.0)

答案 2 :(得分:0)

问题很古老,但是关于第二个问题,您应该使用contentSize而不是offset和inset。

  let contentWidth = 400 //or any other value that suits you
  let contentHeight = 50 
  scrollView.contentSize = CGSize(width: contentWidth, height: contentHeight)

如果内容小于任一维度,则将根据比例垂直或水平滚动。

致谢