使用自动布局时,我的问题与其他'Swift UIScrollView'问题略有不同:
问题: 与其他人不同,当我运行我的应用程序时,它会滚动。我的问题是滚动切断了20-30%的内容。我可以看到按钮确实构建并且在那里,但是当我放开它时,滚动回到假底部,这会切断我的内容!几天来,我一直在努力修复它以滚动整个高度,但它继续切断!!
应用说明: 我使用自动布局来布局6个按钮和标签。每个按钮都是一个矩形图像,正下方有一个标签。 (对不起,该网站不会让我发布图片!)
我的意见安排如下: MainView> ScrollView> ContentView>按钮&标签
我将我的contentView固定到我的ScrollView,并将我的ScrollView固定到我的MainView。我的按钮和标签都具有正确构建的约束,以创建如下所示的列表:
矩形按钮 标签下方 间距 矩形按钮 标签下方 间距 等
有谁能告诉我为什么我不能滚动视图的全长?
答案 0 :(得分:7)
您对项目约束方式的描述含糊不清,因此我将列出您完成此项工作所需的所有约束。然后你可以比较你所需要的和相应的调整。
您的ScrollView应固定在MainView的所有4个边上。 (这不是绝对必要的。您可以根据需要限制ScrollView,但要确保它随着设备和/或方向的变化而增长。)
您的ContentView应固定在ScrollView的所有4个边上,偏移量为0.
由于您希望ScrollView仅垂直滚动,因此使用 Equal Widths 约束将ContentView的宽度约束为ScrollView的宽度。为此,在文档大纲视图中, Control -drag从ContentView到ScrollView,然后从弹出窗口中选择 Equal Widths 。< / p>
ContentView的高度将由其中所有内容的总高度设置。为了实现这一点,您需要将最顶部的按钮固定到ContentView的顶部,所有按钮和标签都应固定到最近的邻居,最底部的标签应固定在ContentView的底部。此外,您的所有按钮和标签都应该有宽度和高度的约束。我建议为按钮设置显式宽度约束和显式高度约束,并在ContentView中水平居中。对于标签,请设置显式高度约束并将左右边缘固定到ContentView。
如果您有这些限制而没有其他约束,则您的ContentView将适当调整大小。
答案 1 :(得分:0)
正如您所说,使用contentView通常可以解决问题。所以你很有可能需要再看看你的约束。也许在一个干净/新项目中尝试这个解决方案,看它是否有效。 (确实有效)。我的猜测是你的一些约束相互冲突。
否则我认为setContentSize
中滚动查看的viewDidLoad
是个好主意。
另一个黑客将放置2个UI对象,其右上角和左下角的alpha设置为零。这将提示scrollView设置其contentSize。