사과
  • 애플 개발자 문서 한글 번역
  • App Frameworks
    • Foundation
      • 숫자, 데이터와 기본값
      • 문자열과 텍스트
      • 컬렉션
      • 날짜와 시간
      • 데이터 포맷
      • 작업 관리
        • Operation
        • OperationQueue
        • Timer
      • 리소스
        • Bundle
      • 파일 시스템
        • FileManager
      • Notification
        • NSKeyValueObserving
      • URL 로딩 시스템
        • 웹사이트 데이터를 메모리에 저장하기
        • URLSession
          • URLSessionConfiguration
            • urlCache
            • requestCachePolicy
          • configuration
        • URLSessionTask
        • URLRequest
        • URLResponse
        • HTTPURLResponse
        • 캐시 데이터에 접근하기
        • CachedURLResponse
        • URLCache
      • Object Runtime
        • NSValue
    • UIKit
      • UIKit으로 앱 개발
      • 앱과 환경
        • 앱 라이프 사이클 관리하기
        • 앱 실행에 대응하기
        • UIApplication
      • 문서, 데이터와 클립보드
      • Mac Catalyst
        • iPad 앱을 Mac 버전으로 만들기
        • 아이패드 앱의 맥 최적화
      • 뷰와 컨트롤
        • UIView
        • Table Views
          • UITableView
          • UITableViewCell
          • UIRefreshControl
        • UIScrollView
      • View Controllers
        • UIViewController
        • UITableViewController
        • UISearchController
      • 애니메이션과 햅틱
        • 프로퍼티 기반 애니메이션
          • UIViewPropertyAnimator
        • View controller 전환
      • 터치, 누르기, 제스처
        • UIResponder
        • UIKit 제스처 처리
        • 다중 제스처 인식기 조정
        • UILongPressGestureRecognizer
        • UIPanGestureRecognizer
          • maximumNumberOfTouches
          • minimunNumberOfTouches
          • translation(in:)
          • setTranslation(_:in:)
          • velocity(in:)
        • UIGestureRecognizer
    • Swift
      • 스위프트 표준 라이브러리
        • 메모리 직접 관리
          • 포인터 파라미터를 사용하는 함수 호출
          • UnsafePointer
          • UnsafeMutableRawBufferPointer
    • SwiftUI
      • 뷰와 컨트롤
        • View
        • Text
        • TextField
      • 뷰 레이아웃과 표현
      • 그리기와 애니메이션
      • 프레임워크 통합
      • 상태와 데이터 흐름
  • Graphics and Games
    • Core Animation
      • CALayer
      • CAAction
      • CAShapeLayer
      • CADisplayLink
    • Core Graphics
      • CGFloat
      • CGPath
  • App Services
    • Combine
    • WebKit
      • WKWebView
  • Media
    • AVFoundation
      • 시스템 오디오 상호작용
        • AVAudioSession
          • AVAudioSession.Category
            • ambient
            • multiRoute
            • playAndRecord
            • playback
            • record
            • soloAmbient
          • AVAudioSession.Mode
      • AVFoundation 자료형
  • Documentation Archive
    • 번들 프로그래밍 가이드
      • 번들에 대해
      • 번들 구조
    • Key-Value Observing 프로그래밍 가이드
    • Threading 프로그래밍 가이드
      • About Threaded Programming
      • Thread Management
  • ETC
    • Not Found
Powered by GitBook
On this page
  • Summary
  • Declaration
  • 개요
  • 주제
  • 커스텀 뷰 구현
  • 뷰 설정
  • 상호작용성 제공
  • Xcode에서 Preview 구성하기
  • 뷰 식별하기
  • 뷰 modifier 구현하기
  • 관련 문서
  • Inherited By
  • Confirming Types
  • 같이 보기
  • Essentials
  1. App Frameworks
  2. SwiftUI
  3. 뷰와 컨트롤

View

앱 UI의 일부분을 표시하고 뷰를 구성하는데 사용되는 modifier를 제공하는 타입

Previous뷰와 컨트롤NextText

Last updated 5 years ago

원문 출처

Summary

SDKs

  • iOS 13.0+

  • macOS 10.15+

  • Mac Catalyst 13.0+

  • tvOS 13.0+

  • watchOS 6.0+

  • Xcode 11.0+

Framework

  • SwiftUI

Declaration

protocol View

개요

struct MyView: View {
    var body: some View {
        Text("Hello, World!")
    }
}
Text("Hello, World!")
    .opacity(0.5)  // Display partially transparent text.
VStack {
    Text("Title")
        .font(.headline)  // 이 뷰에 한해 폰트를 오버라이딩 합니다.
    Text("First body line")
    Text("Second body line")
}
.font(.body)  // 이 스택의 기본 폰트를 설정합니다.
Text("Title")
    .frame(width: 100)
    .border(Color.gray)

수정자를 적용하는 순서가 중요합니다. 예를 들어, 위 예제 코드의 border는 frame의 전체 길이에 맞추어 윤곽을 그립니다.

만약 border가 먼저 적용된다면 윤곽은 text view를 따라 그려지게 되며 텍스트를 렌더링하는데 필요한 공간 이상으로 커지지 못할 것입니다.

Text("Title")
    .border(Color.gray)  // border가 먼저 적용됩니다.
    .frame(width: 100)

100 포인트 너비의 보이지 않는 다른 뷰에 감싸는 것은 복합 뷰의 레이아웃에는 영향을 미치겠지만 border에는 아무런 효과가 없습니다.

주제

커스텀 뷰 구현

  • var body: Self.Body 뷰의 동작과 컨텐츠 필수. 기본 구현이 제공됩니다

뷰 설정

  • 레이아웃 계층구조 내의 뷰에 크기, 위치, 정렬, 패딩 등을 조정함으로써 뷰 자신의 위치를 잡는 방식을 알려줍니다.

  • 접근성 장애인을 포함한 가능한 많은 사람들이 접근 가능한 뷰를 만들어보세요.

  • 렌더링 스케일링, 마스킹 또는 그래픽 효과를 적용하는 등 시스템이 뷰를 그리는 방식에 변화를 줄 수 있습니다.

  • 스타일링 뷰에 포함되는 텍스트, 컨트롤, 기타 컨텐츠에 적용할 스타일을 지정하세요.

상호작용성 제공

  • 입력과 이벤트 사용자 입력과 시스템 이벤트에 반응하도록 뷰에 동작을 제공하세요.

  • 뷰 표현 특정 조건에서 보여질 수 있는 부가적인 뷰를 정의하세요.

  • 상태 뷰 설정값에 접근하고 구성 데이터로 자식 뷰를 제공하세요.

Xcode에서 Preview 구성하기

  • func previewDevice(PreviewDevice?) -> View Preview의 장치를 재정의합니다.

  • func previewDisplayName(String?) -> View 에디터에서 사용자에게 보여질 이름을 제공합니다.

  • func previewLayout(PreviewLayout) -> View Preview 컨테이너의 크기를 재정의합니다.

뷰 식별하기

  • func id<ID>(ID) -> View 삽입, 삭제가 가능하며 유일하게 식별되는 뷰를 생성합니다.

  • func equatable() -> EquatableView<Self> 새 값이 기존 값과 동일할 때 뷰가 자식뷰를 업데이트 하지 않도록 합니다. Self가 Equatable을 준수할 때 사용가능합니다.

  • associatedtype Body 뷰의 본문을 나타내는 뷰 타입 필수

뷰 modifier 구현하기

  • func modifier<T>(T) -> ModifiedContent<Self, T> 수정자를 뷰에 적용합니다.

  • struct ModifiedContent 수정자가 적용된 값

  • struct EmptyModifier 비어있거나 식별되는 수정자

관련 문서

Inherited By

  • DynamicViewContent

  • NSViewControllerRepresentable

  • NSViewRepresentable

  • Shape

  • UIViewControllerRepresentable

  • UIViewRepresentable

  • WKInterfaceObjectRepresentable

Confirming Types

  • AngularGradient

  • AnyView

  • Button

  • ButtonStyleConfiguration.Label

  • Color

  • DatePicker

  • Divider

  • EditButton

  • EmptyView

  • EquatableView

  • ForEach 컨텐츠가 View를 준수하면 준수합니다.

  • Form

  • GeometryReader

  • Group 컨텐츠가 View를 준수하면 준수합니다.

  • GroupBox

  • HSplitView

  • HStack

  • Image

  • LinearGradient

  • List

  • MenuButton

  • ModifiedContent 컨텐츠가 View를 준수하고 modifier가 viewModifier를 준수하면 준수합니다.

  • NavigationLink

  • NavigationView

  • Never

  • Optional 옵셔널이 View를 준수하면 준수합니다.

  • PasteButton

  • Picker

  • PrimitiveButtonStyleConfiguration.Label

  • RadialGradient

  • ScrollView

  • Section 부모, 컨텐츠, Footer가 모두 View를 준수할 때 준수합니다.

  • SecureField

  • Slider

  • Stepper

  • SubscriptionView

  • TabView

  • Text

  • TextField

  • Toggle

  • ToggleStyleConfiguration.Label

  • TupleView

  • VSplitView

  • VStack

  • ZStack

같이 보기

Essentials

View 프로토콜을 따르는 타입을 선언함으로써 커스텀 뷰를 생성할 수 있습니다. 라는 계산된 속성(Computed property)을 구현하여 커스텀 뷰에 컨텐츠를 제공하세요.

위 예제의 인스턴스처럼 SwiftUI에서 제공하는 하나 이상의 기본 뷰를 뷰 계층으로 결합하여 뷰의 body를 조합하세요.

View 프로토콜은 default 구현과 함께 프로토콜 메서드로 정의된 수정자 set을 제공합니다. 이 수정자 셋은 앱 레이아웃 내에서 뷰를 설정하고 위치를 조정하는데 사용됩니다. 수정자는 일반적으로 다른 뷰 내에서 특정하여 호출될 수 있도록 뷰 인스턴스를 감싸는 방식으로 동작합니다. 예를들어, text 뷰에 수정자를 추가함으로써 투명도가 적용된 새로운 뷰를 반환받을 수 있습니다.

수정자의 효과는 자식뷰로 전파되어, 자식 뷰에서 명시적으로 오버라이드하지 않는 한 같은 효과가 적용됩니다. 예를 들어, 다른 뷰를 세로로 쌓는 역할만 하는 은 자체적으로 표시할 텍스트가 없습니다. 그러므로 수정자를 스택에 적용하여도 스택 그 자체에는 아무런 효과가 없습니다. 그러나 스택의 자식 뷰에는 적용이 되며, 특정 자식 뷰에서 스택의 수정자를 오버라이드하는 것도 가능합니다:

이전의 결과를 래핑하는 수정자 체인은 흔히 사용됩니다. 예를 들어, 텍스트 뷰에 너비가 지정된 수정자를 사용해서 레이아웃을 잡은 다음, 수정자로 윤곽을 그릴 수 있습니다:

이 튜토리얼은 여러분이 좋아하는 장소를 발견하고 공유하는 Landmarks라는 iOS 앱을 만들면서 진행됩니다. 여러분은 랜드마크의 상세정보를 보여주는 화면을 구성하는 것부터 시작하게 될 것입니다.

Landmarks 앱에서는 사용자가 프로필을 작성함으로써 개성을 표현할 수 있습니다. 사용자들에게 자기 자신의 프로필을 수정할 수 있는 기능을 제공하기 위해서 여러분들은 편집모드를 추가하고 설정 화면을 디자인하게 될 것입니다.

https://developer.apple.com/documentation/swiftui/view
body
Text
opacity(_:)
VStack
font(_:)
frame(width:height:alignment:)
border(_:width)
뷰의 생성과 조합
UI 컨트롤로 작업하기