UIScrollView大小的问题

时间:2017-06-14 12:20:51

标签: ios iphone swift swift3 uiscrollview

我现在尝试动态调整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 } }

中开始的SQL查询

我尝试了自由形式的大小变体和扩展名为

的版本
Window -> Perspective -> Customize Perspective...

但没有任何帮助。有人有想法吗?

UIScrollView did not show everything

修改

@Stephen J我不理解你的答案,对不起:(

我也有子视图,但我怎么能说Scrollview等于他的尺寸?我尝试用CTRL +在Scrollview上拖动鼠标,在另一个方向上拖动鼠标。

所以它看着我的故事板

Storyboard

1 个答案:

答案 0 :(得分:0)

这个想法没问题,但是......

您的扩展程序循环显示滚动视图的子视图,但您的滚动视图仅包含 ONE 子视图 - 您的ContentView ...和 视图包含一堆子视图。 (实际上,Scroll视图的子视图属性包含scrollIndicator栏,但这并不是真正的因素)。

您要做的是循环浏览ContentView的子视图,然后更改大小,然后根据{设置滚动视图的.contentSize {1}}。

因此...

ContentView

就我个人而言,我发现使用自动布局和约束来使用Scroll视图真的非常容易 - 比这种方法更容易,因为你不必重新计算。但是,如果这对你有用,那就太棒了:)。

编辑:这是一个完整的工作示例。它:

  1. 创建一个大小为完整视图的ScrollView
  2. 添加了一个没有大小的ContentView
  3. 垂直添加30个标签,间距为16磅
  4. 然后根据ContentView的子视图计算和设置ContentView的大小和Scroll视图的.contentSize
  5.     // 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