根据UIScrollView的高度设置UIView的高度

时间:2016-02-12 22:41:06

标签: ios swift uiview uiscrollview

我有5 UIViewsUIScrollView。然后我将UIScrollView' s contentSize.height设置为10,000。

如何将UIScrollView1/5中包含的每个视图的高度更改为contentSize.height?另外,我想提一下视图和滚动视图都是通过Interface Builder创建的。以下是我尝试过的View Controller中的一些代码:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    self.scrollView.layoutIfNeeded()
    scrollView.contentSize.width = UIScreen.mainScreen().bounds.size.width
    scrollView.contentSize.height = 10000
    myView.bounds.size.height = scrollView.contentSize.height * 1/5
    print(scrollView.contentSize.height)
}

此代码可以工作,并将myView高度设置为2000,但是第二次滚动时,视图会回到我在Interface Builder中设置的原始高度。另外我想补充一点,当我打印scrollView' contentSize时,它会像预期的那样返回10,000

长篇故事简短:如何制作UIView高度的Scroll Views内容大小的1/5?

2 个答案:

答案 0 :(得分:1)

您可以像V:|[view1(==view2)][view2(==view3)]...[view5(==view1)]|一样在contentSize上添加约束,这样视图将相互固定,并从内容大小的顶部到底部固定,每个视图都具有相同的高度。

答案 1 :(得分:0)

好的,所以我想我找到了一个解决方案。在 @beyowulf 建议之后,我所做的是为UIScrollView中的五个视图中的每个视图创建了一个高度约束。然后我做的是为每个高度限制创建了一个@IBOutlet。最后,在viewDidLayoutSubviews方法中,我将高度限制constant属性修改为UIScrollView内容大小高度的1/5。

所以,这是一些示例代码:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    self.pointBreakdownScrollView.layoutIfNeeded()
    pointBreakdownScrollView.contentSize.width = UIScreen.mainScreen().bounds.size.width
    scrollView.contentSize.height = 2000

    view1HeightConstraint.constant = scrollView.contentSize.height * 1/5
    view2HeightConstraint.constant = scrollView.contentSize.height * 1/5
    view3HeightConstraint.constant = scrollView.contentSize.height * 1/5
    view4HeightConstraint.constant = scrollView.contentSize.height * 1/5
    view5HeightConstraint.constant = scrollView.contentSize.height * 1/5
}