我现在尝试动态调整UIScrollView的大小,就像Android中的wrap_content属性一样。
数据来自我在extension UIScrollView {
func resizeScrollViewContentSize() {
var contentRect = CGRect.zero
for view in self.subviews {
contentRect = contentRect.union(view.frame)
}
self.contentSize = contentRect.size
}
}
我尝试了自由形式的大小变体和扩展名为
的版本Window -> Perspective -> Customize Perspective...
但没有任何帮助。有人有想法吗?
修改
@Stephen J我不理解你的答案,对不起:(
我也有子视图,但我怎么能说Scrollview等于他的尺寸?我尝试用CTRL +在Scrollview上拖动鼠标,在另一个方向上拖动鼠标。
所以它看着我的故事板
答案 0 :(得分:0)
这个想法没问题,但是......
您的扩展程序循环显示滚动视图的子视图,但您的滚动视图仅包含 ONE 子视图 - 您的ContentView
...和 视图包含一堆子视图。 (实际上,Scroll视图的子视图属性也包含scrollIndicator栏,但这并不是真正的因素)。
您要做的是循环浏览ContentView
的子视图,然后更改其大小,然后根据{设置滚动视图的.contentSize
{1}}。
因此...
ContentView
就我个人而言,我发现使用自动布局和约束来使用Scroll视图真的非常容易 - 比这种方法更容易,因为你不必重新计算。但是,如果这对你有用,那就太棒了:)。
编辑:这是一个完整的工作示例。它:
// init empty rect
var contentRect = CGRect.zero
// for each subview in the ** Content ** view - NOT in the Scroll view
for view in theContentView.subviews {
// union the view's rect with the "total" rect
contentRect = contentRect.union(view.frame)
}
// set the frame size of the Content view to the "total" rect size
theContentView.frame.size = contentRect.size
// increast the size of the "total" rect by the Content view's x,y offsets
contentRect.size.width += theContentView.frame.origin.x
contentRect.size.height += theContentView.frame.origin.y
// NOW we can set the contentSize of the Scroll view
theScrollView.contentSize = contentRect.size