UIScrollView 和约束的问题

Posted

技术标签:

【中文标题】UIScrollView 和约束的问题【英文标题】:Trouble with UIScrollView and Constraints 【发布时间】:2015-02-20 09:59:20 【问题描述】:

我在使用 UIScrollViewConstraints 时遇到问题。

我想在我的应用程序中显示一个FAQ。这将包括几个问题和答案,长度不一。它在发布后不会改变,所以我直接在情节提要中处理所有事情。但是,它必须适用于不同的 iPhone 屏幕尺寸(从 iPhone 5 到 iPhone 6 Plus)。

所以我想做的是:

UIView
  UIScrollView
     UIView (FAQ1)
        UILabel (Question 1)
        UITextView (Answer 1)
     UIView (FAQ2)
        UILabel (Question 2)
        UITextView (Answer 2)
     ...

这是它的外观示例(故意设置颜色,在运行时查看):

现在,如果我应用一些约束,我会设法做到这一点:

但是它不能滚动,并且文本在右侧。

如果我在较小的屏幕上运行相同的东西,我会得到:

这一次是可滚动的(不超过你在屏幕截图上看到的...)并且文本仍然没有。

有没有人可以帮助我理解如何正确使用ConstraintsUIScrollView

如果可能的话,小屏幕上的文本大小必须缩小。 如果不是,它应该保持相同的大小,但 UITextView 也可以滚动。

【问题讨论】:

【参考方案1】:

使用滚动视图和自动布局的最佳方法是在滚动视图中添加一个视图并将其所有边缘固定到滚动视图和等宽到超级视图,将滚动视图的所有边缘固定到超级视图

    将标签的顶部、左侧、右侧和高度固定到 FAQ1 视图。 将文本视图的顶部固定到标签,将左右和底部固定到 FAQ1 视图。 将 FAQ1 视图的高度以及 faq1 视图的左侧和右侧固定到内容视图。 请按照步骤 1 到 3 查看所有常见问题解答。 将 faq1 视图的顶部固定到内容视图的顶部 将下一个常见问题视图的顶部固定到上一个常见问题视图的底部。 将最后一个常见问题视图的底部固定到内容视图的底部

当添加您的 faq1 视图时,将其顶部到顶部、左侧和右侧固定到 contentView 的顶部左侧和右侧,并带有必要的填充。

您可以找到示例代码here 希望这能解决你的问题

【讨论】:

一开始我没有设法让它工作,即使我正确地遵循了你的指示。这让我发疯,因为你的项目运行良好。最终我发现ContentView(在ScrollView 内)丢失了,我不得不将它的宽度设置为等于它的父级。现在我明白了一点,我应该能够完成我的观点。如果我有新问题,我会再次发布。无论如何,谢谢! @lchamp 我在第一行中提到了内容视图。但是我使用了单词视图而不是 contentView。如果我的解决方案有帮助,我可以投票吗

以上是关于UIScrollView 和约束的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 UIScrollview 中禁用对角线拖动

限制UIScrollView中的可滚动区域

更改界面方向时UIScrollView上的奇怪跳转(ATPagingView)

如何在 ios 中为 UIScrollView 设置对齐方式

UIScrollView 和约束问题

自动滚动 UIScrollView 以适应原生 iOS Mail.app 中的内容