apple/SwiftUI, Combine 29

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/552)  EqutableView Usage1. 내가 EqutableView로 ..

Swift Combine Networking

Swift Combine Networking  Combine을 활용해서 쉽게 서버와 통신을 처리할 수 있음.난이도는 총 3단계로 아래 파일에 있는 Refactoring(상)과 Advanced Model에 대해서만 설명.  목차1. Refactoring (상) 모델 파일//// UserModel.swift// CombineNetworking//// Created by Hamlit Jason on 2022/06/10.//// let user = try? newJSONDecoder().decode(User.self, from: jsonData)import Foundation// MARK: - UserElementstruct UserElement: Codable, Hashable { let id:..

[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는 해당 속성에 의존하는 뷰의 일부를 업데이트합니다...