develop
IBDesignable, IBInspectable 본문
반응형
1. CustomView IBDesignable 만들기
@IBDesignable
class CustomView: UIView {
}
2. CustomView에 IBInspectable 추가하기
@IBDesignable
class CustomView: UIView {
@IBInspectable
var labelText: String? {
set {
self.label.text = newValue
}
get {
return self.label.text
}
}
@IBInspectable
var labelTextColor: UIColor? {
set {
self.label.textColor = newValue
}
get {
return self.label.textColor
}
}
@IBInspectable
var labelBackgroundColor: UIColor? {
set {
self.label.backgroundColor = newValue
}
get {
return self.label.backgroundColor
}
}
private lazy var label: UILabel = {
let label = UILabel()
label.font = UIFont.boldSystemFont(ofSize: 22)
self.addSubview(label)
label.translatesAutoresizingMaskIntoConstraints = false
self.addConstraints([
NSLayoutConstraint(item: self, attribute: .centerX, relatedBy: .equal, toItem: label, attribute: .centerX, multiplier: 1, constant: 0),
NSLayoutConstraint(item: self, attribute: .centerY, relatedBy: .equal, toItem: label, attribute: .centerY, multiplier: 1, constant: 0),
])
return label
}()
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func awakeFromNib() {
super.awakeFromNib()
}
}
3. Storyboard나 xib에서 사용하기
기타
Storyboard나 xib에서 사용할 경우 awakeFromNib가 호출된다.
override func awakeFromNib() {
super.awakeFromNib()
}
코드상에서 아래처럼 사용할 경우에는
let customView = CustomView(frame: CGRect(x:0, y:0, width: 100, height: 100))
init이 호출되고 required init?(coder aDecoder: NSCoder) 을 같이 적어주어야 한다.
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
Storybard, Xib, 코드에서 다 사용 가능 하게 하려면 아래와 같이 적어 주면 된다.
override func awakeFromNib() {
super.awakeFromNib()
self.initViews()
}
override init(frame: CGRect) {
super.init(frame: frame)
self.initViews()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
private func initViews() {
}
Storyboard나 xib에서 사용되면 awakeFromNib와 init?가 호출될 것이고
코드에서 사용하면 init() 이 호출된다.
반응형
'iOS' 카테고리의 다른 글
Subscript (0) | 2021.01.01 |
---|---|
Swizzling (0) | 2020.12.31 |
Image Face Detector 사진에서 얼굴 찾기 (0) | 2020.12.30 |
Text Gradation 텍스트에 그라데이션 추가 (0) | 2020.12.29 |
PHAsset (0) | 2020.12.29 |
Comments