728x90
특정 UIView를 String으로만 dynamic하게 instance를 생성하려고 한다.
className()
extension UIView {
public static func className() -> String {
return String(reflecting: Self.self)
}
}
- 해당 UIView Class name을 가져오는데 최종적으로 "module이름.Class이름" 과 같은 형태로 만들어진다
- class 생성 시 앞의 Module이름은 반드시 필요하다.
View instance 생성
let viewClass = TestView.className() // 이 부분은 생성하고자 하는 View의 ClassName을 가져와서 dynamic하게 변경가능
let type = NSClassFromString(viewClass) as! UIView.Type
let view = type.init(frame: frame)
contentView.addSubview(view)
- 생성하고자 하는 View의 className() 을 호출해서 class String을 가져온다.
- NSClassFromString으로 type instance를 생성한다.
- type의 initalizer를 호출해서 해당 View instance를 생성한다.
728x90
'iOS > 설명' 카테고리의 다른 글
[iOS] UIResponder (0) | 2022.01.04 |
---|---|
[iOS] Provisioning Profile, Certificate, Code signing (0) | 2021.12.19 |
[iOS] CALayer의 anchorPoint, position (0) | 2021.12.08 |
[iOS] isBeingPresented, isBeingDismissed (0) | 2021.12.07 |
[iOS] CALayer (0) | 2021.12.05 |
댓글