SwiftUI - View

김세영·2022년 3월 22일
0

SwiftUI 정리

목록 보기
4/11
post-thumbnail

View

protocol View

앱의 사용자 인터페이스의 한 부분이며, 뷰를 구성하는 데 사용하는 수정자(Modifier)를 제공하는 타입

Overview

  • View 프로토콜을 채택하여 커스텀 뷰를 만듦
  • 계산 프로퍼티인 body를 구현해야 함
  • 하나 이상의 SwiftUI에서 제공하는 뷰 혹은 개발자가 정의한 커스텀 뷰를 계층으로 결합하여 body를 구성
  • View 프로토콜은 뷰 레이아웃을 구성하는 데 사용하는 프로토콜 메서드인 수정자(Modifier)들을 제공
  • 수정자는 호출하는 뷰 인스턴스에 지정된 특성을 가진 뷰를 Wrapping하여 작동

Custom View 선언 및 구성

기존의 imperative 방식은 view를 인스턴스화, 배치, 구성하는 것은 물론이고 상황의 변화에 따른 지속적인 업데이트가 필요함

SwiftUI는 선언적 접근을 통해 UI 구성에 대한 부담을 줄이고, 사용자 입력과 상태 변경 등의 이벤트에 대응하여 뷰를 자동으로 업데이트함

Modifiers

  • 뷰의 모양 및 동작을 구성하는 것을 도와주는 역할

    • view에 접근성 기능을 추가
    • 뷰의 스타일, 레이아웃 및 기타 특성을 조정
    • 복사 및 붙여넣기같은 이벤트에 반응
    • popover와 같은 modal 뷰를 조건부로 표시
    • 툴바와 같은 Supporting view를 구성
    • ...
  • View Modifier는 View 프로토콜에서 제공하는 동작을 사용하는 메서드이므로, 이를 준수하는 모든 유형에 적용 가능

  • Modifier을 체이닝하여 복잡한 효과를 구성 가능

  • 대상 뷰에 영향을 미치지 않는 경우에도 Modifier을 뷰에 적용 가능

    • 해당 효과를 명시적으로 재정의하지 않은 하위 뷰로 이 효과가 전달
    VStack {
        Text("Title")  // Font = .title
            .font(.title)
        Text("First body line.") // Font = .body
        Text("Second body line.") // Font = .body
    }
    .font(.body)
  • 특정 뷰에게만 제공하는 Modifier는 다른 뷰에서 사용 불가능

    VStack {
        Text("Hello, World!")
    }
    .bold() // Fail
    • padding()과 같은 opaque type을 반환하는 general modifier을 체이닝하면 더 이상 특정 뷰의 Modifier은 사용 불가
          Text("Hello, world!")
              .padding()
              .bold() // Fail
          
          Text("Hello, world!")
              .bold()
              .padding() // Success
profile
초보 iOS 개발자입니다ㅏ

0개의 댓글