본문 바로가기

SwiftUI8

[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] .task(priority:_:) 플랫폼 버전 대응하기 보호되어 있는 글 입니다. 2024. 8. 23.
[SwiftUI] 링크도 게으름이 필요해: NavigationLink를 Lazy하게 안녕하세요. 로디입니다. SwiftUI로 앱을 개발하다 보면 자연스럽게 만나게 되는 친구가 있죠. 바로 NavigationLink입니다.오늘은 NavigationLink에서 메모리 사용을 최적화하는 기법에 대해 알아보려고 합니다. 뷰 간의 네비게이션을 손쉽게 처리해주는 NavigationLink 요녀석, 처음엔 아주 사랑스러운데, 쓰다 보면 뭔가 불편함을 느낄 때가 있습니다.  기본적으로 NavigationLink는 화면에 나타나는 순간, 링크의 목적지(destination)를 미리 생성해버립니다. 작은 화면이나 간단한 뷰라면 상관없지만, 복잡한 화면이거나 무거운 데이터를 다루는 경우라면 이야기가 달라집니다. 무거운 뷰를 미리 생성해둔다..? 메모리 폭행범인가요?..🥲 아직 쓰지도 않는 뷰의 메모리를 .. 2024. 8. 18.
[WWDC21] What’s new in SwiftUI 1. pull to refresh2. searchable [SearchBar]3. list row separator4. async image5. material effect6. badge for TabView item7. onSumit Trigger8. safeArea inset9. iteractiveDismissDisabled10. swipe actions11. AppStorage raw representable12. keyboard done button13. Canvas Core Graphics14. keyboard accessory view15. FocusState 2024. 8. 11.
[WWDC20] What’s new in SwiftUI 1. Grid View/ Collection View2. ScrollView API Update Scroll To Bottom3. PageView Controller4. Full Screen modal5. MultiLine TextField [Text Editor]6. Progress View and Activity Indicator7. Link8. LazyVStack and LazyHStack 9. Disclosure Group or Drop Down10. Advanced Map View and Map View annotations11. TextField onChange [SearchBar] 2024. 8. 11.
[SwiftUI] 왜 SwiftUI에서 View는 구조체(Struct)로 설계되었을까? SwiftUI는 Apple이 발표한 최신 UI 프레임워크로, 선언형 프로그래밍 패러다임을 채택하고 있습니다. SwiftUI에서 모든 뷰(View)는 구조체(Struct)로 선언됩니다. UIKit에서는 Class 기반의 UIViewController로 뷰를 구현했습니다. SwiftUI에서 뷰에 대한 구현에 왜 구조체를 선택했을까요? 이번 글에서는 SwiftUI에서 View가 구조체로 설계된 이유를 성능, 메모리 관리, 상태 관리, 그리고 선언형 프로그래밍 모델 측면에서 생각해보겠습니다.  1. 값 타입의 장점: 명확한 상태 관리SwiftUI는 선언형 프로그래밍을 기반으로 하여 UI 상태를 관리합니다. 이 과정에서 중요한 점은 상태의 변화를 명확하게 관리할 수 있어야 한다는 것입니다. 구조체는 값 타입이기 .. 2023. 12. 3.