iOS Swift UIScrollView动态高度

时间:2015-12-07 11:48:38

标签: ios swift uiscrollview

我在尝试计算scrollView的高度时遇到了一些问题。我做了一个"测试"应用程序强调问题。 我只有一个嵌入在NavigationController中的控制器,它嵌入在TabBarController中。

然后我在屏幕顶部看到一个视图,并在此视图下方包含2个标签的scrollView。我试图通过获取其子视图中最大的maxY来计算scrollView的高度。这是代码:

override func viewDidLoad() {
    super.viewDidLoad()

    // I have to add this line so that the red view doesn't show under the navigation bar
    self.edgesForExtendedLayout = UIRectEdge.None

    let view = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 40))
    view.backgroundColor = UIColor.redColor()

    let scrollView = UIScrollView(frame: CGRect(x: 0, y: view.frame.maxY, width: self.view.frame.width, height: self.view.frame.height - view.frame.maxY))
    scrollView.backgroundColor = UIColor.yellowColor()

    let label1 = UILabel(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
    label1.text = "test"
    label1.sizeToFit()
    scrollView.addSubview(label1)

    let label2 = UILabel(frame: CGRect(x: 0, y: 700, width: 0, height: 0))
    label2.text = "test"
    label2.sizeToFit()
    scrollView.addSubview(label2)

    // Calculate scrollView height
    var maxY:CGFloat = 0
    for view in scrollView.subviews {
        if view.frame.maxY > maxY {
            maxY = view.frame.maxY
        }
    }
    scrollView.contentSize = CGSize(width: self.view.frame.size.width, height: maxY)

    self.view.addSubview(view)
    self.view.addSubview(scrollView)
}

所以这就是我所拥有的:

我应该看到另一个"测试"滚动时底部标签但事实并非如此,滚动视图不够大

如果我删除红色视图,请使scrollView适合所有主视图并删除此行 self.edgesForExtendedLayout = UIRectEdge.None 然后它起作用:

任何解决方案?

0 个答案:

没有答案