Swift - 커스터마이징

2019-02-20

꼼꼼한 재은씨의 Swift:실전편을 바탕으로 작성하였습니다.


UI 커스터마이징(1)

커스터마이징의 개념

기본 기능에 만족하지 않고 객체의 제약을 벗어나 원하는 대로 자유롭게 기능을 확장할 수 있는 기술

iOS의 화면 표현 구조

  • 항상 디바이스 스크린에 꽉 들어차는 하나의 화면만을 표시할 수 있다.
  • 다른 프로그램이 실행되면 기존의 화면은 내려가고 그 자리를 새로운 화면이 채운다.
  • 윈도우

    iOS에서 디바이스의 스크린을 빈틈없이 채우기 위한 객체이며 유저 인터페이스 표현 계층의 최상위에 위치한다.

    컨텐츠를 직접 가지지 않으며 컨텐츠를 가진 뷰를 내부에 배치하여 화면에 출력하는 역할

  • 컨텐츠를 담아 이를 스크린 상에 표시하고, 사용자의 입력에 반응하는 객체.

  • 여러 개의 뷰들이 윈도우에 올려져 모바일 디바이스 화면에 표현되는 중첩 인터페이스 구조(사진)

중첩 인터페이스 구조

윈도우가 뷰를 직접 참조하지 않고 뷰 컨트롤러가 그 사이를 중계하는 구조 덕분에 윈도우는 뷰 컨트롤러를 통해 제공되는 뷰를 읽어들여 표현할 뿐, 뷰를 직접 관리하지 않아도 된다.

이는 윈도우 객체에 커스텀 코드가 난립하는 것을 차단, 앱이 표현해야 하는 모든 뷰를 윈도우 객체 하나가 관리해야하는 불상사를 막아주기도 한다.

  • 루트 뷰 컨트롤러는 윈도우와 연결하기 위한 뷰 컨트롤러의 집단의 대표같은 느낌

  • 컨텐츠 뷰 컨트롤러

    씬을 담당하여 컨텐츠를 표시하는 뷰 컨트롤러

  • 컨테이너 뷰 컨트롤러

    내부에 뷰 컨트롤러를 배치하고, 이들을 서로 유기적인 관계로 엮이도록 해준다.
    ex) 탭 바, 페이지 컨트롤러 등

  • 다른 뷰를 포함하는 뷰 -> 슈퍼 뷰, 슈퍼뷰에 포함된 뷰 -> 서브 뷰, 뷰 계층 구조 최상위 뷰 -> 루트 뷰 or 컨텐츠 뷰

  • 코코아 터치 프레임워크

    기능이나 동작 구조, 유저 인터페이스를 구성하는 기본적인 객체들을 모두 담고 있는 유일한 객체

    • 파운데이션 프레임워크

      애플리케이션의 중심이자 기능적인 면을 담당하는 프레임워크

    • UIKit 프레임워크

      모바일 어플리케이션으로서의 기능 구현을 담당하는 프레임워크

  • 코코아 프레임워크(macOS용)와 코코아 터치 프레임워크(iOS용)의 차이 코코아 프레임워크와 코코아 터치 프레임워크