먼저 내가 필요한 UIView를 만들고 UIView를 상속받은 파일을 만들어서 연결시켜 준다.
이렇게 만든 UIView(xib)를 인터페이스 빌더를 통해 뷰컨트롤러에 올리려면 아래처럼 불러온 후 직접 addSubView를 해서 올려야한다. 즉, 코딩으로만 올릴 수 있다.
let view = Bundle.main.loadNibNamed(xibName, owner: self, options: nil)
self.view.addSubView(view)
하지만 만든 UIView를 감싸는 UIView(랩핑뷰)를 만들면 뷰컨트롤러에 쉽게 올릴 수 있다. 인터페이스 빌더의 뷰컨트롤러에 UIView 객체를 하나를 생성하고, 생성한 UIView를 랩핑뷰로 연결하면 쉽게 인터페이스 빌더를 통해 작업할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import UIKit
class MyView: UIView {
private let xibName = "MyView"
override init(frame: CGRect) {
super.init(frame: frame)
self.commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.commonInit()
}
private func commonInit(){
let view = Bundle.main.loadNibNamed(xibName, owner: self, options: nil)?.first as! UIView
view.frame = self.bounds
self.addSubview(view)
}
}
| cs |
위 소스는 출처에서 퍼옴.
뷰컨트롤러에 만든 UIView 객체는 내부의 UIView 사이즈로 고정해주는 것이 맞을 것 같다. 어차피 내부 UIView가 원본이니까.
마지막으로 내부 UIVIew의 배경색은 투명으로 처리해주면 깔끔하게 보인다.
물론 인터페이스빌더로 안하고 출처에 있는 내용처럼 직접 코딩해서 addSubView 해줘도 된다.
댓글 없음:
댓글 쓰기