kosicki123
12/12/2016 - 6:45 PM

Initialize Swift subclass of UIView, designed in .xib

Initialize Swift subclass of UIView, designed in .xib

// Create CustomView.xib, set File's Owner to CustomView. 
// Link the top level view in the XIB to the contentView outlet.

class CustomView : UIView {
    @IBOutlet private var contentView:UIView?
    // other outlets
    
    override init(frame: CGRect) { // for using CustomView in code
        super.init(frame: frame)
        self.commonInit()
    }
    
    required init?(coder aDecoder: NSCoder) { // for using CustomView in IB
        super.init(coder: aDecoder)
        self.commonInit()
    }
    
    private func commonInit() {
        Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)
        guard let content = contentView else { return }
        content.frame = self.bounds
        content.autoresizingMask = [.flexibleHeight, .flexibleWidth]
        self.addSubview(content)
    }
}