Ios 如何使用init(frame:)和auto layout实例化自定义UIView子类?
我正在制作一个ios应用程序,并依靠自动布局约束来设置视图和子视图布局的大小 我为Ios 如何使用init(frame:)和auto layout实例化自定义UIView子类?,ios,swift,autolayout,Ios,Swift,Autolayout,我正在制作一个ios应用程序,并依靠自动布局约束来设置视图和子视图布局的大小 我为UIScrollView创建了一个自定义子类,如下所示。当我编写它的init方法时,我看到它的超类只有init(frame:)要重写。但是因为我使用的是自动布局,所以不应该设置框架 那么在我的例子中,我应该如何编写init方法呢?我是否应该传入一个虚拟帧值: MyCollectionView: UIScrollView { init() { super.init(CGRect(x:0, y:
UIScrollView
创建了一个自定义子类,如下所示。当我编写它的init
方法时,我看到它的超类只有init(frame:)
要重写。但是因为我使用的是自动布局,所以不应该设置框架
那么在我的例子中,我应该如何编写init
方法呢?我是否应该传入一个虚拟帧
值:
MyCollectionView: UIScrollView {
init() {
super.init(CGRect(x:0, y:0, width:0, height:0))
}
}
用法:
ViewController:UIViewController {
let myScrollView = MyScrollView()
}
使用autolauout时,不必担心帧的设置/不设置
let myScrollView = MyScrollView()
myScrollView.translatesAutoresizingMaskIntoConstraints = false
如果translatesAutoResizengmaskintoConstraints
设置为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() {
}
}
你使用xib吗?
let gg = MyScrollView(frame: .zero)
gg.translatesAutoresizingMaskIntoConstraints = false
// add constraints