오늘의 공부(27)

주방·2022년 8월 9일
0

Swift

목록 보기
13/17
post-thumbnail

#1. 학습

1) XIB UIView Custom Class

  • 왜 사용하는가? UIView의 init생성자를 그대로 사용할 수 있다.

  • 생성 방법

    • File Owner Custom Class
      • 뷰의 구조가 하나 더 위로 생기는 것 같음. 그러나 해당 인스턴스의 이니셜라이저로 호출 할 수 있다.
    • View - Custom Class
      • 이니셜라이져로 호출 할 수는 없지만, 뷰를 바로 호출 할 수 있어 계층구조가 추가되지 않음

2) Initializer

가. required init?(coder: NSCoder)

  • 스토리보드 또는 nib 파일에서 보기를 로드하고 보기에 사용자 정의 초기화가 필요한 경우

  • NSCoding은 무엇일까?

    • NSCoding 프로토콜은 이를 구현하는 클래스로부터 실패가능한 이니셜라이저를 작성하게 한다.
    • UIView, UIViewController는 NSCoding 프로토콜을 구현하고 있기 때문에 상속받은 클래스에서 추가적으로 required init?(coder: )를 구현해야 할 수도 있다.
    • 그래서 자식클래스에 부모의 이니셜라이져들을 자동으로 상속한다.

나. 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: )이 호출된다.

3) @IBInspectable / @IBDesignable

  • 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를 잡는 것이 쉽지 않았음. 보다 학습해야함.

0개의 댓글