我有一个自定义UIView,其中有一个UIScrollView作为子视图。我的问题是,当视图调整大小时,我希望调整滚动视图的大小,并将其contentInset重置为此:
scrollView.contentInset = UIEdgeInsets(top: self.bounds.height/2, left: 0, bottom: self.bounds.height/2, right: 0)
我该如何使用自动版式?
答案 0 :(得分:1)
给出这样的视图布局:
当容器视图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
}
}
重要的是要注意,当内容插入发生更改时,您可能看不到它们,因为例如,当减少内容插入时,滚动视图的内容不会自动滚动到边缘。您必须使用滚动条才能看到内容插图确实发生了变化。