我正在制作ios应用,并且依靠AutoLayout约束来设置视图和子视图布局的大小。
我制作了UIScrollView
的自定义子类,请参见下文。当我编写其init
方法时,我看到它的超类只有init(frame:)
被覆盖。但是因为我使用的是自动布局,所以我不应该设置框架。
那么我该如何编写init
方法呢?我应该传入一个虚拟的frame
值吗?
MyCollectionView: UIScrollView {
init() {
super.init(CGRect(x:0, y:0, width:0, height:0))
}
}
用法:
ViewController:UIViewController {
let myScrollView = MyScrollView()
}
答案 0 :(得分:1)
当您使用自动启动时,您不必担心设置/不用框架
let myScrollView = MyScrollView()
myScrollView.translatesAutoresizingMaskIntoConstraints = false
将translatesAutoresizingMaskIntoConstraints
设置为false
时,框架将无效,
class MyScrollView: UIScrollView {
override init(frame: CGRect) {
super.init(frame: frame)
setUp()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setUp()
}
func setUp() {
}
}
let gg = MyScrollView(frame: .zero)
gg.translatesAutoresizingMaskIntoConstraints = false
// add constraints