UIScrollView contentInset自动布局问题

时间:2018-06-21 15:58:28

标签: ios uiview uiscrollview autolayout ios-autolayout

我有一个自定义UIView,其中有一个UIScrollView作为子视图。我的问题是,当视图调整大小时,我希望调整滚动视图的大小,并将其contentInset重置为此:

  scrollView.contentInset = UIEdgeInsets(top: self.bounds.height/2, left: 0, bottom: self.bounds.height/2, right: 0)

我该如何使用自动版式?

1 个答案:

答案 0 :(得分:1)

给出这样的视图布局:

storyboard layout

当容器视图UIScrollView更改大小时,您可以使用视图的contentInset属性的MyView属性自动更改didSet bounds属性:< / p>

import UIKit

class MyView: UIView {

    weak var scrollView: UIScrollView!

    override var bounds: CGRect {
        didSet {
            scrollView.contentInset = UIEdgeInsets(top: bounds.height / 2, left: 0, bottom: bounds.height / 2, right: 0)
        }
    }
}

class ViewController: UIViewController {

    @IBOutlet weak var myView: MyView!
    @IBOutlet weak var scrollView: UIScrollView!

    override func viewDidLoad() {
        super.viewDidLoad()

        myView.scrollView = scrollView
    }
}

重要的是要注意,当内容插入发生更改时,您可能看不到它们,因为例如,当减少内容插入时,滚动视图的内容不会自动滚动到边缘。您必须使用滚动条才能看到内容插图确实发生了变化。