안녕하세요 조이킴입니다. 🐥
뷰 작업 시간을 대폭 단축시킬 수 있는 CustomView를 소개합니다.
CustomView class( 재사용할 수 있는 나만의 뷰객체) 개념
tableView에서 재활용할 셀을 xib파일이나 tableViewCell 파일로 만들어두고 활용하는 것처럼, 반복 사용이 필요한 디자인이 있을 경우 나만의 뷰객체 틀을 만들어두고 필요한 곳마다 찍어내 사용할 수 있는 customeView를 활용하면 편리합니다.
init() 뷰객체 찍어내는 초기화 구문
parameter를 받아 활용할 수 있는 초기화구문을 만들수도 있고, 부모 클래스의 기존 초기화구문을 override 하여 사용할 수도 있습니다.
필수생성자 누락 시 오류 주의
UIView는 storyboard나 xib 파일 xml 형태로 저장하고 있고, 이걸 화면으로 가져올 때 init(coder:NSCoder)을 활용합니다.
이를 위해 UIView는 init(coder:NSCoder)를 필수생성자로 갖고 있는 NSCoder이라는 프로토콜을 채택하고 있습니다.
코드로 UIView를 상속한 클래스를 만들 때 새로 지정 생성자를 구현하게 되므로, 직접 필수생성자 required init?(coder: NSCoder)을 명시해줘야합니다. (명시하지 않을 경우 컴파일 오류가 뜨기 때문에 fix 버튼 눌러주면 해결됩니다.)
//재사용할 뷰객체의 클래스명으로 새로운 swift 파일을 생성하여 작성합니다.
import UIKit
class NicknameTextField:UITextField {
/* 1. 부모 지정생성자 상속:
override init(frame: CGRect) {
super.init(frame:.zero)
borderStyle = .none
clearButtonMode = .whileEditing
textAlignment = .left
attributedPlaceholder = NSAttributedString(string: "직접입력", attributes: [.foregroundColor : Color.mediumGray])
} */
// 2. 원하는 parameter 받을 수 있는 지정생성자 새로 구현:
init(placeholder: String) {
super.init(frame: .zero)
borderStyle = .none
clearButtonMode = .whileEditing
textAlignment = .left
attributedPlaceholder = NSAttributedString(string: placeholder, attributes: [.foregroundColor : Color.mediumGray])
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
'Swift > 개발팁' 카테고리의 다른 글
[Xcode] Code Snippet 코드스니펫으로 코드 재활용하기 (feat. 여러 맥 기기에 코드스니펫 동기화) (0) | 2024.05.23 |
---|
댓글