목록iOS/SwiftUI (9)
J
`@AppStorage`SwiftUI에서 제공하는 속성 래퍼로, UserDefaults와 연동하여 간편하게 데이터를 저장하고 관리 가능.`@AppStorage` 사용 시 특정 데이터가 앱 전체에서 공유되고, 앱을 종료해도 유지되는 속성을 쉽게 정의 가능.이 래퍼는 특히 SwiftUI 뷰에서 사용자 설정, 앱 상태 등을 저장하고 불러오는 데 유용.자동으로 상태 변화를 감지하고 UI를 업데이트하므로, UserDefaults와 직접 상호작용하는 것보다 편리.1. 사용법`@AppStorage`는 속성에 키와 기본값을 지정하여 사용.내부적으로 UserDefaults에 접근하여 저장 및 조회를 수행하며, 데이터 타입은 UserDefaults에서 지원하는 `Bool`, `Int`, `Double`, `String`,..
`@ObservableObject`, `@Published`, `@StateObject`, `@ObservedObject`는 상태 관리와 데이터 흐름을 위한 속성 래퍼.이 속성들은 각기 다른 용도로 사용되며, 뷰와 데이터 모델 간의 데이터를 연결하고 상태 변경 시 뷰를 업데이트하는 역할.1. `@ObservableObject`정의`@ObservableObject`는 관찰 가능한 객체를 정의하는 데 사용.`ObservableObject` 프로토콜을 채택한 클래스에 적용하며, 해당 객체에서 발생하는 상태 변경을 뷰에 알림.주요 특징클래스에 사용Swift의 `class`에서만 사용할 수 있음.Publisher 역할`@Published` 속성이 변경되면 `ObservableObject`는 변경 사실을 알림.Co..

`@ViewBuilder`란?`@ViewBuilder`는 SwiftUI에서 여러 뷰를 묶어 하나의 반환 값으로 처리할 수 있도록 돕는 결과 빌더(Result Builder).이를 통해 SwiftUI에서 여러 개의 뷰를 조건적으로 반환하거나 반복적으로 생성하는 UI 코드를 간결하고 선언적으로 작성할 수 있음.SwiftUI에서 많이 사용되는 `VStack`, `HStack`, `ZStack`과 같은 컨테이너 안에서 여러 뷰를 배치하거나, 뷰 속성을 정의할 때 사용. `@ViewBuilder`는 특히 SwiftUI가 뷰의 계층 구조를 효율적으로 관리하고 렌더링하는 데 중요한 역할.1. `@ViewBuilder`의 역할여러 뷰를 하나의 뷰로 반환SwiftUI에서 여러 뷰를 반환하면 이를 하나로 묶어 렌더링할 수..

AsyncImage in SwiftUIAsyncImage는 SwiftUI에서 비동기로 이미지를 로드하고 표시하는 간단한 방법을 제공.주로 네트워크 URL에서 이미지를 로드할 때 사용. iOS 15 이상에서 사용할 수 있음.1. AsyncImage의 기본 사용법struct AsyncImageExample: View { var body: some View { AsyncImage(url: URL(string: "")) }}URL: 네트워크에서 이미지를 가져올 URL.기본적으로, AsyncImage는 이미지를 다운로드하고 성공적으로 로드되면 표시.2. 기본 Placeholder와 비동기 처리이미지가 로드되는 동안 또는 로드에 실패한 경우의 처리를 위해 AsyncImage는 클로저를 제공...
ForEach in SwiftUIForEach는 SwiftUI에서 컬렉션의 요소를 반복(iterate)하여 동적으로 뷰를 생성할 때 사용하는 뷰.SwiftUI는 선언적 UI 프레임워크이므로 반복문(for-in) 대신 ForEach를 사용하여 간결하고 효율적인 방식으로 UI를 구성.1. ForEach 기본 구조ForEach(data, id: \\.self) { item in Text(item)}매개변수데이터 (data)반복하려는 컬렉션. 배열, 범위, 식별 가능한 데이터 등이 될 수 있음.식별자 (id)각 항목을 고유하게 식별하기 위한 값. (예: id: \\.self 또는 모델의 고유 식별자)뷰 클로저각 항목에 대해 생성할 뷰를 정의하는 클로저.2. ForEach 사용 예제배열을 반복하기struct..
NavigationView와 NavigationStack은 네비게이션 인터페이스를 구현하기 위해 사용되지만, 각각의 특징과 사용법에는 차이점이 존재. iOS 16부터 NavigationStack을 도입하여 NavigationView의 한계를 개선하고 더 유연하고 강력한 네비게이션 시스템을 제공.1. NavigationView정의SwiftUI에서 iOS 13부터 사용 가능.뷰 계층을 탐색할 수 있는 기본적인 네비게이션 컨테이너.단순하고 사용하기 쉽지만, 복잡한 네비게이션 흐름에서는 한계 존재.특징정적 탐색 구조선언된 뷰 계층에 따라 탐색 경로를 정적 정의.초기화 동작NavigationLink의 destination 뷰는 탐색 여부와 관계없이 미리 초기화.DeprecatediOS 16부터 비추천(deprec..

SwiftUI에서 ViewModifier와 modifier(_:)SwiftUI에서 ViewModifier는 뷰의 외형과 동작을 변경하거나 확장하는 데 사용하는 재사용 가능한 방법.이를 통해 코드 중복을 줄이고, 더 읽기 쉽고 유지 관리하기 쉬운 코드를 작성할 수 있음.1. ViewModifier란?정의ViewModifier는 SwiftUI의 프로토콜로, 뷰의 외형이나 동작을 캡슐화하여 여러 뷰에 재사용할 수 있음.뷰의 꾸미기 작업, 레이아웃 변경, 행동 추가 등을 위해 사용.구조ViewModifier는 다음과 같은 요구사항을 가진 프로토콜body(content:) 메서드: 원래의 뷰(content)를 기반으로 수정된 뷰를 반환.원래의 뷰를 변경 시키는 것이 아니라 수정된 뷰를 반환!AssociatedTy..
"Source of Truth"는 데이터의 유일하고 신뢰할 수 있는 저장 위치를 의미.SwiftUI와 같은 선언적 UI 프레임워크에서 특히 중요한 개념.애플리케이션이 데이터 상태를 관리하고 UI와 동기화하는 방식을 결정하는 핵심 요소.1. Source of Truth란?정의Source of Truth는 애플리케이션 내에서 특정 데이터의 상태를 관리하는 유일한 위치.다른 모든 데이터 뷰나 컴포넌트는 이 Source of Truth를 기반으로 데이터를 읽거나 수정.데이터의 일관성과 동기화를 보장.예시@State, @Binding, @StateObject, @ObservedObject 등을 사용 시, Source of Truth는 데이터 상태가 실제로 저장된 위치.2. SwiftUI에서 Source of Tr..
`@State`와 `@Binding`은 SwiftUI에서 상태 관리와 데이터 전달을 위한 핵심 속성 래퍼.이들 속성 래퍼를 사용하면 SwiftUI에서 선언적 방식으로 UI를 업데이트 가능.1. `@State``@State`는 로컬 상태를 저장하는 데 사용.이는 뷰 내에서만 소유되고 수정 가능한 상태를 의미.`@State`로 선언된 변수의 값이 변경될 때마다 해당 값을 사용하는 뷰가 자동으로 리렌더링.struct CounterView: View { @State private var count = 0 // 뷰의 로컬 상태 var body: some View { VStack { Text("Count: \\\\(count)") Button("Inc..