View

  • 화면을 구성하는데 기본이 되는 class
  • NSObject를 상속한 UIResponder를 상속해서 구성됨
  • CustomView는 UIView를 상속함
  • UIImageView, UILable, UIScrollView…

가능한 것들

  • Drawing
  • Animation
  • Layout
  • subview 관리
  • Event Handling
    • UIResponder 상속하기 때문에, touch와 같은 event에 반응 가능
    • gesture 추가

초기화

  • 형태
    // code
    init(frame:)
    init() // default parameter = CGRect.zero
     
    // storyboard
    init(coder:)
  • templates
    override init(frame: CGRect) {
        super.init(frame: frame)
        // write code
    }
     
    required init?(coder: NScoder) {
        super.init(coder: coder)
        // write code
    }

frame & bounds

  • UIView는 기본적으로 사각형임
  • 이 상태에서 frame, bounds를 통해 크기와 위치 조정
  • CGRect
    • frame, bounds의 자료형
    • x, y, point 및 가로,세로 크기를 가짐
  • point
    • 좌표 체계
    • px * scale임
      • UIScreen.main.scale로 접근 가능
  • frame
    • superview로 부터 상태적인 위치 및 크기
    • 집의 창문이라 생각
  • bounds
    • view의 내부 크기
    • 방의 크기라 생각
    • 창문보다 방이 넓을 수 있고, 창문과 방이 크기가 같을 수 있다.
    • 창문 설치 위치가 고정이라고 했을 때, 방의 위치를 이리거리 움직인다면 방의 내부를 창문으로 볼 수 있을 것이다.
    • 위의 설명 방식으로 동작한다.

Subview 관리

  • 추가
    view.addSubview(subview)
  • 제거
    subview.removeFromSuperView()

LayoutSubviews

  • view 크기 및 bounds들이 변경될 때 호출됨
  • layoutSubviews를 override해서 view의 화면 변화에 따른 subview들의 layout 재조정 가능
  • 보다 깊은 사항은 추가 글을 통해 알아보자

주의 사항

  • view 접근은 반드시 main thread에서 이루어져야 함