Swift - UIScrollView部分滚动

时间:2015-03-01 07:03:54

标签: ios swift scroll uiscrollview autolayout

使用自动布局时,我的问题与其他'Swift UIScrollView'问题略有不同:

问题: 与其他人不同,当我运行我的应用程序时,它会滚动。我的问题是滚动切断了20-30%的内容。我可以看到按钮确实构建并且在那里,但是当我放开它时,滚动回到假底部,这会切断我的内容!几天来,我一直在努力修复它以滚动整个高度,但它继续切断!!

应用说明: 我使用自动布局来布局6个按钮和标签。每个按钮都是一个矩形图像,正下方有一个标签。 (对不起,该网站不会让我发布图片!)

我的意见安排如下: MainView> ScrollView> ContentView>按钮&标签

我将我的contentView固定到我的ScrollView,并将我的ScrollView固定到我的MainView。我的按钮和标签都具有正确构建的约束,以创建如下所示的列表:

矩形按钮 标签下方 间距 矩形按钮 标签下方 间距 等

有谁能告诉我为什么我不能滚动视图的全长?

2 个答案:

答案 0 :(得分:7)

您对项目约束方式的描述含糊不清,因此我将列出您完成此项工作所需的所有约束。然后你可以比较你所需要的和相应的调整。

  1. 您的ScrollView应固定在MainView的所有4个边上。 (这不是绝对必要的。您可以根据需要限制ScrollView,但要确保它随着设备和/或方向的变化而增长。)

  2. 您的ContentView应固定在ScrollView的所有4个边上,偏移量为0.

  3. 由于您希望ScrollView仅垂直滚动,因此使用 Equal Widths 约束将ContentView的宽度约束为ScrollView的宽度。为此,在文档大纲视图中, Control -drag从ContentView到ScrollView,然后从弹出窗口中选择 Equal Widths 。< / p>

  4. ContentView的高度将由其中所有内容的总高度设置。为了实现这一点,您需要将最顶部的按钮固定到ContentView的顶部,所有按钮和标签都应固定到最近的邻居,最底部的标签应固定在ContentView的底部。此外,您的所有按钮和标签都应该有宽度和高度的约束。我建议为按钮设置显式宽度约束和显式高度约束,并在ContentView中水平居中。对于标签,请设置显式高度约束并将左右边缘固定到ContentView。

  5. 如果您有这些限制而没有其他约束,则您的ContentView将适当调整大小。

答案 1 :(得分:0)

正如您所说,使用contentView通常可以解决问题。所以你很有可能需要再看看你的约束。也许在一个干净/新项目中尝试这个解决方案,看它是否有效。 (确实有效)。我的猜测是你的一些约束相互冲突。

否则我认为setContentSize中滚动查看的viewDidLoad是个好主意。

另一个黑客将放置2个UI对象,其右上角和左下角的alpha设置为零。这将提示scrollView设置其contentSize。