如何将一堆水平视图居中放在UIScrollView中

时间:2014-11-08 22:41:58

标签: ios uiview uiscrollview autolayout

我有UIScrollView填充设备的宽度,它包含多个UIViews水平布局。所有视图都具有相同的宽度,因此在iPhone上必须滚动才能看到所有视图,但在iPad上所有视图都可见。

我的问题是如何在屏幕上完美地水平居中观看?当可用空间足够大以显示所有视图时,它们需要居中,但是当它不足以显示所有视图时,它们可以像现在一样布局,只需从左到右。

界面完全在Interface Builder中设置。滚动视图设置为填充整个设备宽度 - 前导和尾随到superview。滚动视图中的第一个视图将前导设置为其超级视图,因此它位于最左侧。最后一个按钮的尾部设置为superview - 在滚动视图的最右侧,用于定义可滚动内容区域。中间的每个视图都相对于其左侧的视图布局 - 通向上一个按钮。

这是当前布局的图形表示: enter image description here

这是我想要获得的图形表示: enter image description here

其他信息:
滚动视图不必始终填充设备宽度,因为它实际上是完全透明的。当所有视图都可见时,我想禁用滚动。这需要是自适应的,这样在旋转设备时它可以根据需要改变布局,因为在横向的iPhone上所有视图都应该是可见的,但是在纵向中它们不会是。

2 个答案:

答案 0 :(得分:0)

您可以尝试设置滚动视图的contentInset属性,其类型为UIEdgeInsets。此属性只是为滚动视图提供了一定量的" padding",添加到可滚动区域。

您可以确定视图末尾(右侧)有多少额外空间,除以2,并使用该值在每一侧提供等宽填充。

答案 1 :(得分:0)

另一种纯粹基于自动布局的方法可能是:

  • 将中间视图限制为在superview中水平居中。
  • 相对于链中的中间视图约束每个视图