【发布时间】:2016-02-12 22:41:06
【问题描述】:
我有 5 个 UIViews 包含在 UIScrollView 中。然后我将UIScrollView 的contentSize.height 设置为10,000。
如何将UIScrollView 中包含的每个视图的高度更改为contentSize.height 的1/5?另外,我想提一下,视图和滚动视图都是通过 Interface Builder 创建的。这是我尝试过的视图控制器中的一些代码:
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 中设置的原始高度。我还想补充一点,当我打印滚动视图的 contentSize 时,它会像预期的那样返回 10,000。
长话短说:如何使 UIView 的高度为 Scroll Views 内容大小的 1/5?
【问题讨论】:
-
你在使用自动布局吗?
-
@beyowulf 是的,我正在使用自动布局,但如果必须,我愿意禁用它。
-
使用自动布局时,您应该更新约束而不是设置框架/边界。您可以将 myView 的高度设置为 scrollView 的 contentView 的 1/5,方法是同时选择两者,添加相等的高度约束,然后选择该约束并在检查器中将乘数从 1 更改为 0.20。
-
@beyowulf 如果我在 IB 中设置创建约束,我将 myView 设置为具有乘数为 1:5 的等高约束,然后在代码中调用更新约束,它会起作用吗?跨度>
-
@beyowulf 没有,我会尝试为 contentSize 创建一个约束。
标签: ios swift uiview uiscrollview