Swift | UIView의 initializer

youjin·2022년 6월 29일
0
post-thumbnail

오늘은 UIView를 사용할 때 매번 작성하던 initializer에 대해 알아볼 거예요.

항상 UIView를 상속한 class 내부에 아래 그림의 initializer를 작성하고 그곳에서 UI를 설정했는데요.

왜 이러한 initializer를 작성해야 하는지 궁금해져서 알아보려고 해요.



먼저 UIView의 공식문서를 확인해보면 두가지의 initializer가 정의되어 있어요.

하나씩 살펴볼게요.



init(frame: CGRect)

이 생성자는 코드로 뷰를 만들때 호출됩니다. 코드로 추가한 view에 속성을 적용하기 위해서는 init(frame:) 에 속성을 지정해줘야합니다.

override init(frame: CGRect){
    super.init(frame: frame)
    
    // UI 설정
    configureUI()
}

private func configureUI(){
    self.addSubview(backgroundView)
    backgroundView.backgroundColor = .blue
}


init?(coder: NSCoder)

이 생성자는 스토리보드로 뷰를 만들때 호출됩니다. 인터페이스빌더에서 custom 클래스로 지정한 뷰는 required init?(coder aDecoder:)가 호출됩니다.

required init?(coder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}




결과적으로 UIView를 쓰면 위의 생성자 두개를 모두 작성하고 스토리보드를 사용하면 init?(coder: NSCoder) 에서 UI를 설정하고 코드로 뷰를 작성할시에는 init(frame: CGRect) 에서 UI를 설정하자.

0개의 댓글