我有一个ViewController。在其中我将ScrollView与View(contentView)放在一起。后来我从contentView拖到View并设置Equal Height。现在它滚动,但不完全。
如你所见,它继续在textView下方,但它 不滚动。我该如何解决?
答案 0 :(得分:0)
您需要设置scrollview的内容大小。使用以下代码执行此操作:
func viewDidLayoutSubviews()
{
super.viewDidLayoutSubviews()
self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.contentView.frame.size.height);
}
答案 1 :(得分:0)
将Autolayout
与UIScrollView
一起使用非常棘手。
在您的代码中,您必须通过计算subviews
contentView
的高度来更新 contentView 的高度限制,这将自动更新您的contentSize
ScrollView
您可以滚动浏览所有子视图。
有关使用 Autolayout + UIScrollView 的详细信息,您可以阅读this。
答案 2 :(得分:0)
UIScrollView能够自动计算它的内容高度和宽度,但你需要帮助它。 为此,您需要:
contentView
(在您的情况下)绑定到superview的所有方面(Scroll View
)。contentView
计算它的大小。这是你的方法中的一个小错误。您已将contentView
的高度设置为等于View
的高度。所以基本上Scroll View
的contentSize.height与View
的高度相同。这不是你想要的动态内容。通常您希望将contentView
的宽度设置为等于View
的宽度,并且不要设置contentView
的高度。相反,您希望将contentView
的子视图绑定到他们的超级视图,以便他们的超级视图(contentView
)自动计算它的高度。
在你的情况下,我会绑定:
pizza.jpg
到superview的左上角(pizza.jpg
的高度将根据内部图片大小设置); SAMPLE TITLE
标签 - 左右观看;最靠pizza.jpg
图片; Text View
- 左下角到superview;最靠SAMPLE TITLE
标签;设定一个固定的高度。在这种情况下,contentView
将自己定义所需的高度。 Scroll View
会相应地设置它的contentSize。
并且您的屏幕将能够垂直滚动(应该是);)
答案 3 :(得分:0)
根据this link(感谢this Matt's answer first),UIScrollView与AutoLayout的行为与其他视图的行为不同。
scrollView的子视图从scrollView的contentView设置其约束,而不是直接设置scrollview。这允许内容滚动。
所以:
它应该是这样的:
希望这有帮助
阅读this (from Matt once again)了解更多信息