페이지

2020년 2월 9일 일요일

Custom View , @IBDesignable, @IBInspectable


//BaseViewWithXib.swift
import UIKit

class BaseViewWithXib: UIView {
    var contentView: UIView?
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupView()
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        setupView()
    }

    

    func setupView() {
        let view = viewFromNibForClass()
        view.frame = bounds

        view.autoresizingMask = [
            UIViewAutoresizing.flexibleWidth,
            UIViewAutoresizing.flexibleHeight
        ]

        addSubview(view)
        self.contentView = view
    }


    private func viewFromNibForClass() -> UIView {
        let bundle = Bundle(for: type(of: self))
        let nib = UINib(nibName: String(describing: type(of: self)), bundle: bundle)
        let view = nib.instantiate(withOwner: self, options: nil).first as! UIView
        return view
    }

}





//MyView.swift
import UIKit

@IBDesignable class MyView: BaseViewWithXib {

    @IBInspectable var bgColor:UIColor?{
        didSet {
            self.contentView?.backgroundColor = bgColor
        }
    }


    //must be . if not, IB designable compile error occur!
    override init(frame: CGRect) {
        super.init(frame: frame)     
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

   
}


댓글 없음:

댓글 쓰기