목록전체 글 (51)
J
NavigationView와 NavigationStack은 네비게이션 인터페이스를 구현하기 위해 사용되지만, 각각의 특징과 사용법에는 차이점이 존재. iOS 16부터 NavigationStack을 도입하여 NavigationView의 한계를 개선하고 더 유연하고 강력한 네비게이션 시스템을 제공.1. NavigationView정의SwiftUI에서 iOS 13부터 사용 가능.뷰 계층을 탐색할 수 있는 기본적인 네비게이션 컨테이너.단순하고 사용하기 쉽지만, 복잡한 네비게이션 흐름에서는 한계 존재.특징정적 탐색 구조선언된 뷰 계층에 따라 탐색 경로를 정적 정의.초기화 동작NavigationLink의 destination 뷰는 탐색 여부와 관계없이 미리 초기화.DeprecatediOS 16부터 비추천(deprec..

@State, View RenderingfirstNumber 변경 - 별도의 구조체 (let)struct ContentView: View { @State private var firstNumber = 0 @State private var secondNumber = 0 @State private var thirdNumber = 0 @State private var forthNumber = 0 var body: some View { VStack { Text("First: \\(firstNumber)").background(Color.random()) second third() FourthVi..

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..
1. projectedValue란?projectedValue는 @propertyWrapper에서 정의할 수 있는 선택적 프로퍼티.이는 원래의 wrappedValue와는 다른 추가적인 정보를 제공하거나 특정 작업을 수행할 수 있도록 함.wrappedValue: 주로 데이터를 읽고 쓰는 데 사용.projectedValue: 추가적인 동작이나 값을 제공하기 위해 정의.SwiftUI에서의 주요 사례는 @State의 Binding 제공.2. SwiftUI에서 @State와 projectedValue@State의 동작@State는 뷰의 상태를 관리하는 SwiftUI의 프로퍼티 래퍼.@State 프로퍼티는 상태를 직접 수정할 수 있지만, 하위 뷰에 상태를 전달할 때는 Binding 객체로 전달해야 함.struct P..
`@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..
1. Property WrapperPropertyWrapper는 Swift에서 속성의 동작을 캡슐화하여 속성 접근과 변경에 특정 로직을 추가할 수 있도록 지원하는 기능.반복적인 코드를 줄이고 속성의 동작을 추상화하여 재사용 가능한 구조를 제공.@propertyWrapper를 사용해 정의되며, SwiftUI의 @State, @Binding, @AppStorage 등이 대표적인 예.2. Property Wrapper 기본 구조@propertyWrapperstruct ClampedValue { private var value: Int private let range: ClosedRange var wrappedValue: Int { get { value } set..
1. Opaque Type (some 키워드)Swift의 Opaque Type은 함수나 속성이 반환하는 구체적인 타입을 숨기고 대신 타입 정보를 추론할 수 있도록 하는 기능.Ssome 키워드를 사용하여 선언하며, 내부적으로 반환되는 타입이 하나로 고정되지만, 호출자는 타입 정보를 알 필요 없이 사용 가능.이 기능은 Generic과 비슷해 보이지만, 동작 방식에서 중요한 차이점이 존재.Opaque Type은 주로 캡슐화와 유연한 반환 타입 설계에 사용.2. Opaque Type 사용법func makeOpaqueShape() -> some Shape { Circle() // Shape 프로토콜을 준수하는 Circle 반환}반환 타입이 some Shape로 정의되었으므로, 함수는 Shape 프로토콜을 준..