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로 ..

[iOS] NavigationSplitView

NavigationSplitView 목차NavigationSplitView OverviewUI 예시init - NavigationSplitViewVisibilityinit - NavigationSplitViewColumnCustomize - navigationSplitViewStyleSample Code 개발환경XCode 15.0 beta 2단, preferredCompactColumn을 사용하지 않는다면 16.0으로도 가능.최소버전은 16 혹은 17 이상을 권장. NavigationSplitView OverviewNavigationSplitView는 2개 혹은 3개의 칼럼으로 화면을 표시하여, 사용자 경험을 향상. NavigationSplitView의 기본 구조 NavigationSp..

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 빠르게 공부 정리

Combine 빠르게 공부 정리 SwiftUI를 공부하면서 RxSwift에서 점점 Combine으로 넘어가고 있음. 개인적으로는 SwiftUI는 Swift Concurreny와 제일 잘어울리고UIKit은 Rx보다는 퍼스트파티인 Combine을 주로 사용하는데, Rx가 너무 익숙해서 그런지 UIKit 개발에는 Combine보다는 Rx를 주로 사용하는 거 같음. (공식문서 링크)https://developer.apple.com/documentation/combine Apple Developer Documentation developer.apple.com Combine이란?이벤트 처리 오퍼레이터들을 결합함으로써 비동기 이벤트의 핸들링을 사용자가 다룸.조금 더 쉽게 말해보자면 Combine 프레임워크는 결..

SwiftUI @StateObject

SwiftUI @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는 해당 속성에 의존하는 뷰의 일부를 업데이트 Text(model.title) // Updates t..