#1. 학습
1) XIB UIView Custom Class
2) Initializer
가. required init?(coder: NSCoder)
나. override init(frame: CGRect)
-
지정된 프레임 사각형으로 새로 할당된 뷰 개체를 초기화하고 반환
-
UIView에서 init()을 사용할 수 있다는 것은 NSObject를 상속받고 있다.(UIView < UIResponser < NSObject)
-
UIView()상태로 생성하면 frame(0.0, 0.0, 0.0, 0.0)인 상태로 UIView의 Designated Initializer인 init(frame: )이 호출된다.
- IB(Interface Builder) - 사용자 인터페이스를 편리하게 디자인하는 툴이다.
- IB와 xcode는 서로 긴밀하게 연결되어 있어 xcode에서 코드 수정하면, IB에서 반영되고, IB에서 구성한 인터페이스를 외부 클래스 파일로 내보내는 기능을 가지고 있다.
- IB를 이용하면 객체 속성을 쉽게 설정할 수 있고, .xib파일에 저장되며, 빌드시 객체를 자동으로 인스턴스화 할 수 있다.
- 구성
- File's Owner
- 어떤 파일에서든 항상 첫번째 아이콘이고, 디스크에서 로드된 xib파일 객체를 나타냄
- 인터페이스 빌더 상에 기본적으로 나오는 인스턴스화 객체로 xib파일 자체의 소유자를 의미함
- First Responder
- 사용자가 현재 상호작용하는 객체, 사용자가 인터페이스와 상호작용할 때마다 변경됨(ex. 사용자 텍스트필드 입력 중이라면, 텍스트 필드가 현재의 First Responder가 된다.)
- View
- UIView 클래스의 인스턴스, UIView 인스턴스는 사용자가 보고 상호작용할 수 있는 영역이다.
- 화면에 보이는 모든 사용자 인터페이스의 구성요소들(텍스트 필드, 레이블, 버튼 등)은 UIView의 하위 클래스이다.
- View 아이콘을 더블클릭하면 View창이 뜨는데, 이 창에서 사용자 인터페이스를 설계할 수 있다.
- 1988년 무렵 생긴 interface builder는 NestSTEP, OpenSTEP, Mac OS X, 지금은 아이폰용 애플리케이션을 개발하기 위해 사용되고 있으며, .nib이라는 확장자를 사용하는 오래된 형식과 .xib라는 확장자를 사용하는 새로운 형태가 있다.
- @IBInspectable
- Inspector + Able의 합성어로 인스펙터에서 가능하다는 뜻으로 코드와 스토리보드의 인스펙터 영역을 이어주는 기능을 갖고 있다.
- @IBDesignable
- @IBInspectable을 통해 속성 변경 가능하지만, 빌드 전까지 확인 어렵다. 그러나 @IBDesignable을 통해 실시간 반영된 내용을 볼 수 있다.
- 필요성
- Custom View를 코딩하여 만들 때에 실제로 빌드를 돌려 직접 확인해야 하지만, 2가지 기능을 통해 스토리보드로 실시간 확인 가능하다. UI설정으로 들어가는 불필요한 빌드를 현저히 줄일 수 있게 된다.
#2. Assignment
#3. 회고
- XIB를 활용해 뷰를 표시하였다. initailizer를 통해 곧바로 뷰를 재활용할 수 있으나, 표시된 뷰의 layout를 잡는 것이 쉽지 않았음. 보다 학습해야함.