Ios 如何使用init(frame:)和auto layout实例化自定义UIView子类?

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:

我正在制作一个ios应用程序,并依靠自动布局约束来设置视图和子视图布局的大小

我为
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