2017-02-20 82 views
0

我觉得非常密集的问这个,但我已经尝试了几种解决方案,并没有能够拿出我想要的结果。我有2个UIViews是一个更大的UIView的子视图,它是scrollView的子视图。这两个视图分别是登录屏幕&,用户可以在它们之间滑动以正确访问应用程序。但由于某些原因,scrollview将不会在这两个视图之间水平滚动。我正在看的示例使用的不是代码来实现这一点,我已经完全模仿了约束。这可能听起来很愚蠢,但是有没有人对我如何实现这个横向滚动有任何建议?水平滚动与uiscrollview完全通过故事板和自动布局

回答

2

我有2个UIViews这是一个更大的UIView是滚动型的子视图的子视图”

OK,让我们说有Sub1的和分公司2,一个ContainerView内(称之为CV),其在ScrollView(SV)中。

在界面生成器:

  • SUB1与分公司2各自为300宽
  • CV应该是600的宽度,以保持SUB1与分公司2侧由端
  • SV宽度应为300 - 你只会看到Sub1

为了滚动视图滚动,它的内容宽度必须大于它自己的宽度。如果您将CV上的Leading和Trailing约束设置为相对于SV,那将定义内容宽度。

这听起来像你的“ContainerView”约束集到了滚动

希望它的确定在这里有这些图片...反正...

SV - 滚动型 - 是蓝色

CV - 容器视图 - 是粉红色的

Sub1的和分公司2是黄色

开始了滚动型,300×300和中心的两个方向:

​​

添加一个UIView - 这将是CV - 进入SV,以8,8为240×128(我们默认大小会立即改变),并添加前导和的每个8顶部约束:

enter image description here

更改CV到600×120的宽度和高度,并设置宽度和高度的限制。该图的一半,现在延伸到右侧,超出了SV的边缘:

enter image description here

添加两个子视图的CV - 用于演示,我使用UILabels。将它们的宽度x高度设置为50 x 30,并将Sub1设置为8,8。

enter image description here

给Sub1的左,上(8,8)和宽度和高度(50x30)的约束。这将保持“钉”在左上角的简历:

enter image description here

给分公司2宽度和高度(50x30)的约束,以及8,8下和右/后的约束。当你设置这些限制,点击“更新帧”按钮,将分公司2标签自动移动到的地方 - “钉”到CV(鉴于IB不再)的右下角:

enter image description here

现在,真正的关键部分:给CV右/尾随和各8底部的约束。这是自动布局用于确定SV的ContentSize的内容。如果您运行该应用程序,您现在应该能够从Sub1水平滚动到Sub2。

enter image description here

假设了所有的工作,你可以玩弄调整CV的宽度和高度的限制,看看它是如何影响滚动。

源代码在这里:https://github.com/DonMag/ScrollViewConstraints

希望帮助:)

+0

是的,我认为这是问题。但是我对你在这里使用的语言感到困惑。当你说“相对于SV”时,你是否建议将SV和CV叠加在一起,然后设置它们的前沿和后沿? – Onicha21

+0

是啊,有点混乱...我会掀起视觉辅助... – DonMag

+0

OK,或者如果你有类似的信息网站,我会很乐意去探索和 – Onicha21