我有5 UIViews
个UIScrollView
。然后我将UIScrollView
' s contentSize.height
设置为10,000。
如何将UIScrollView
中1/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?
答案 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
}