iOS约束在UIScrollView中不起作用

时间:2015-09-07 13:47:54

标签: ios swift

我有一个应用程序,它在UIScrollView中布局子视图控制器的视图。使用storyboard.instantiateViewControllerWithIdentifier()从故事板创建视图。问题是如果视图未显示在屏幕上,则约束不能正确定位视图。奇怪的是,当您与视图交互时(按下按钮或开始滚动),约束会自行修复。像setNeedsDisplay(), setNeedsLayout, updateConstraints etceteras这样的函数不起作用。

修改
用于将视图写入UIScrollView

的代码
for i in 0..<viewControllers.count {
    addChildViewController(viewControllers[i])
    viewControllers[i].view.frame = CGRect(x: CGFloat(i) * scrollView.bounds.size.width, y: 0, width: scrollView.bounds.size.width, height: scrollView.bounds.size.height)

    scrollView.addSubview(viewControllers[i].view)
}

1 个答案:

答案 0 :(得分:0)

经过一些测试后,我发现这是SDK中的一个错误,iOS 9修复了该错误。我发现只有一种方法可以解决iOS 8上的问题。即在视图作为子视图添加到滚动视图之前设置滚动视图的内容偏移量。用于将视图加载到滚动视图的代码是:

for i in 0..<viewControllers.count {
    scrollView.contentOffset.x = CGFloat(i) * view.bounds.size.width

    addChildViewController(viewControllers[i])
    viewControllers[i].view.frame = CGRect(x: CGFloat(i) * scrollView.bounds.size.width, y: 0, width: scrollView.bounds.size.width, height: scrollView.bounds.size.height)

    scrollView.addSubview(viewControllers[i].view)
}

scrollView.contentOffset.x = 0.0