apple/SwiftUI & Combine 28

SwiftUI DynamicProperty

SwiftUI DynamicProperty 뷰의 외부 속성을 업데이트하는 저장 프로퍼티에대한 인터페이스   view의 body를 다시 계산(recomputing)하기 전에 해당 속성값을 제공  내부적으로 update() 메소드에 의해 기본 값을 업데이트.이 메소드는 필수이며 기본 구현이 제공됨. 이를 통해 저장 프로퍼티를 새로운 값으로 갱신.일반적으로 SwiftUI에서 @State와 같은 프로퍼티 래퍼가 사용될 때 뷰의 상태가 변하면 자동으로 호출되어 뷰의 상태를 최신으로 유지하는데 사용. 예제내용을 FileManager에 실시간으로 저장하는 예제.@AppStroage와 동일한 기능.@propertyWrapperstruct Document: DynamicProperty { @State private..

SwiftUI @FoucsState @FocusedValue @FocusedObject

SwiftUI @FoucsState @FocusedValue @FocusedObject 요약@FocusState: 누가 포커스를 받았는지@FocusedValue: 포커스 된 값이 뭔지 관찰    - 값이 존재하더라도, Focus가 풀린 경우에는 관찰하고 있는 부분에서는 nil로 된다.extension FocusedValues { @Entry var commentFocusedValue: String?}@FocusedObject: 여러 유형의 변경사항을 보다 효율적으로 관리함.   - @StateObject 차이점   - 값이 존재하더라도, Focus가 풀린 경우에는 관찰하고 있는 부분에서는 nil로 된다.   @FocusState 일반적으로 enum을 구성하여 사용.Submit 버튼을 눌렀을 때 se..

[SwiftUI] NavigationLink 화살표 없애기

[SwiftUI] NavigationLink 화살표 없애기 SwiftUI에서 NavigationLink를 사용하면 기본적인 화살표가 생긴다. 해당 포스팅의 방법은 궁극적으로 화살표를 없애는게 아니고, ZStack과 opacity를 활용한 원하는 UI를 그려내는 방법이다. import SwiftUI struct ContentView: View { var body: some View { ZStack(alignment: .leading) { NavigationLink { // destination View } label: { EmptyView() }.opacity(0) Text("내 아이템") } } } 아래 이미지처럼 사용할 수 있다.

[SwiftUI] keyboard 이벤트 핸들링

[SwiftUI] keyboard 이벤트 핸들링 앱 개발에 있어서 키보드 상태에 따라서 뷰의 다른 컴포넌트들의 높이가 조정되는 등 키보드와 관련해서는 꽤나 까다롭다. UIKit을 사용한다면 - iOS 15 이상: keyboardLayoutGuide를 활용하여 레이아웃을 잡기 - iOS 14 이하: 키보드의 상태에 따라 키보드의 높이를 계산해서 뷰의 위치를 조정 view.keyboardLayoutGuide SwiftUI 사용 - iOS 15 이상: @FocusState 활용 - iOS 14 이하: NotificationCenter와 Combine을 활용 샘플코드 키보드 상태를 읽을 수 있도록 아래 코드를 작성 protocol KeyboardReadable { var keyboardPublisher: Any..

[SwiftUI] EqutableView (feat. POD)

- EqutableView란? > EqutableView는 이전 값과 비교하여 새 값이 이전 값과 동일한 경우 자식 업데이트를 방지하도록 설계된 뷰입니다. `iOS 13.0+` `iPadOS 13.0+` `tvOS 13.0` `watchOS 6.0+` `visionOS 1.0+ Beta [apple-docs-EqutableView](https://developer.apple.com/documentation/swiftui/equatableview) 💡 들어가기 전. - 아래의 개념에 대한 지식이 반드시 필요함. 필요한 이유는 글 제일 아래에서 설명 - [Plain ol' Data](https://rldd.tistory.com/551) EqutableView Usage 1. 내가 EqutableView로 만..

[Combine] Networking(feat. RestAPI)

Networking(feat. RestAPI) Combine을 활용해서 쉽게 서버와 통신을 처리할 수 있습니다. 이 글의 제일 아래 부분에서는 MVVM에 대한 고찰도 들어 있습니다. 난이도는 총 3가지로 나뉘어 있습니다. 파일을 확인해주세요! 이 포스팅에서는 Refactoring(상)과 Advanced Model에 대해서만 설명합니다. 자세한 코드는 아래 첨부 파일을 확인해주세요!!! 🥕 목차 🥕 1. Refactoring (상) 2. MVVM에 대한 고찰(Combine 한달차,, 2022.06.11) 🟠 모델 // // UserModel.swift // CombineNetworking // // Created by Hamlit Jason on 2022/06/10. // // let user = try?..

[Combine] Let's study Combine!

Let's study Combine!SwiftUI Combine 공부  ✅ 애플 공식 문서를 바탕으로 정리하였습니다.https://developer.apple.com/documentation/combine Apple Developer Documentation developer.apple.com   ✅ Combine이란?이벤트 처리 오퍼레이터들을 결합함으로써 비동기 이벤트의 핸들링을 사용자가 다룹니다!조금 더 쉽게 말해보자면 Combine 프레임워크는 결국은 시간에 따라 값을 처리하기 위해 SwiftUI API를 제공합니다. 값을 방출하는 Publisher와 값을 수신하는 Subscriber를 통해 처리합니다. RxSwift를 공부했다면 더욱 쉽습니다.   ✅ Combine을 공부하는 이유.SwiftUI(..

[SwiftUI] @StateObject

@StateObject ✅ 아래 공식문서를 바탕으로 작성하였습니다. https://developer.apple.com/documentation/swiftui/stateobject Apple Developer Documentation developer.apple.com 특성 선언에 @StateObject 속성을 적용하고 ObservableObject 프로토콜을 준수하는 초기 값을 제공하여 View, App 또는 Scene에서 상태 개체를 만듭니다. @StateObject var model = DataModel() SwiftUI에서는 객체를 선언하는 인스턴스에 대해 한 번만 객체의 새 인스턴스를 생성합니다. 관찰 가능한 객체의 속성이 변경되면 SwiftUI는 해당 속성에 의존하는 뷰의 일부를 업데이트합니다...

[SwiftUI] State and Data Flow

State and Data Flow ✅ 아래의 문서 중 필요한 부분을 골라서 작성하였습니다. https://developer.apple.com/documentation/swiftui/state-and-data-flow Apple Developer Documentation developer.apple.com SwiftUI는 user interface 디자인을 선언적으로 제공하고 있다. (선언형 프로그래밍) 따라서 view를 계층적으로 구성할 때 views를 위한 데이터도 종속성도 표시한다. 외부 이벤트 혹은 user가 취하는 액션에 의해 데이터의 변화가 있을 때, SwiftUI에 영향을 받는 부분을 자동으로 업데이트 합니다. 결과적으로 이 프레임워크(SwiftUI)는 전통적으로 viewController에..