본문 바로가기

SwiftUI/SwiftUI Basic4

[SwiftUI] 이슈 해결: Bound preference ScrollOffsetKey tried to update multiple times per frame. .onPreferenceChange(MyPreferenceKey.self) { newValue in DispatchQueue.main.async { widget.value = newValue }} onPreferenceChange와 같은 SwiftUI change 핸들러들은 임의의 스레드에서 호출됨. 따라서 View 상태 변수를 업데이트 해야하는 경우에는 위와 같이 메인 쓰레드에서 수행하도록 다시 DispatchQueue.main에 스케쥴링해야함. 2024. 9. 14.
[SwiftUI] 이슈 해결 : Do not put a navigation destination modifier inside a "lazy” container .navigationDestination 모디파이어를 뷰 최상단에 두지 않아 생긴 에러뷰 최상단으로 옮겨줌 2024. 9. 13.
[SwiftUI] ScenePhase : Scene의 Lifecycle 관리하기 안녕하세요 Lody 입니다. 🙂 오늘은 SwiftUI.ScenePhase에 대해 알아보려고 합니다. ScenePhase현재 Scene의 Lifecycle 상태를 관리하는 값입니다.Environment에서 scenePhase를 observing해서 현재 상태 값을 읽을 수 있고, onChange(of: perform:) 메서드를 사용해서 값이 변경할 때마다 이벤트를 받도록 구현할 수 있습니다. ScenePhase는 열거형으로 총3가지(active, inactive, background)입니다. 2024. 8. 31.
[SwiftUI] 왜 SwiftUI에서 View는 구조체(Struct)로 설계되었을까? SwiftUI는 Apple이 발표한 최신 UI 프레임워크로, 선언형 프로그래밍 패러다임을 채택하고 있습니다. SwiftUI에서 모든 뷰(View)는 구조체(Struct)로 선언됩니다. UIKit에서는 Class 기반의 UIViewController로 뷰를 구현했습니다. SwiftUI에서 뷰에 대한 구현에 왜 구조체를 선택했을까요? 이번 글에서는 SwiftUI에서 View가 구조체로 설계된 이유를 성능, 메모리 관리, 상태 관리, 그리고 선언형 프로그래밍 모델 측면에서 생각해보겠습니다.  1. 값 타입의 장점: 명확한 상태 관리SwiftUI는 선언형 프로그래밍을 기반으로 하여 UI 상태를 관리합니다. 이 과정에서 중요한 점은 상태의 변화를 명확하게 관리할 수 있어야 한다는 것입니다. 구조체는 값 타입이기 .. 2023. 12. 3.