【问题标题】:UIScrollView Content Size with Autolayout带有自动布局的 UIScrollView 内容大小
【发布时间】:2015-01-19 11:47:00
【问题描述】:
我正在使用带有自动布局的UIScrollView 来更改 contentSenter code hereize 值,如下所示:
UIView
ScrollView
-
UIView (contentView)
在运行时,我将 UITextView 和 UIImageView 添加到 conentView 并带有约束(上、下、左、右)
但contentView 的大小没有改变,UIScrollView contentSize 也是。
那么可能是什么问题?
【问题讨论】:
标签:
ios
uiview
uiscrollview
autolayout
【解决方案1】:
在运行时,我将 UITextView 和 UIImageView 添加到带有约束(上、下、左、右)的内容视图
也许您应该添加约束 (Top, Left, Height, Width), 或 (Top, Left, Right, Height)
如果你坚持(Top,Bottom,Left,Right),ScrollView会保持旧的内容大小,并使你的UITextView & UIImageView (Height = 0, Width = 0)。
【解决方案2】:
这是一种更新滚动视图内容大小的巧妙方法。它是 Swift,所以如果你在 Objective C 中工作,你需要一个桥接头。
extension UIScrollView {
func updateContentViewSize() {
var newHeight: CGFloat = 0
for view in subviews {
let ref = view.frame.origin.y + view.frame.height
if ref > newHeight {
newHeight = ref
}
}
let oldSize = contentSize
let newSize = CGSize(width: oldSize.width, height: newHeight + 20)
contentSize = newSize
}
}
只要将子视图添加到滚动视图,只需在滚动视图的对象上调用它即可。