본문 바로가기

Dev49

[SwiftUI] Casousel 구현 1. iOS 14 미만 Casousel 구현 더보기 Carousel 과 현재 page를 표시할 수 있는 Page Controller를 각각 구현해서 사용해야 한다. 1. Carousel View 구조체 구현 struct Carousel: UIViewRepresentable { func makeCoordinator() -> Coordinator { return Carousel.Coordinator(parent1: self) } func updateUIView(_ uiView: UIViewType, context: Context) { print("") } var width: CGFloat @Binding var page: Int var height: CGFloat func makeUIView(context:.. 2021. 10. 29.
[SwiftUI] iOS 13 -> iOS 14 변경점 해당 문서는 확인된 사항들을 누적해서 기록할 예정이다. iOS 13 Target SDK로 구현시 참고할 사항 GridView LazyVGrid / LazyHGrid 사용보다는 iOS 13에서 사용하던 VStack과 HStack 조합을 사용하는 것이 좋을 것 같다. iOS 버전으로 구분하여 구현 시 오히려 유지보수가 어려워질 수 있다. Lazy Loading 이 필요하다면 UICollectionVIew를 UIViewRepresentable를 이용해서 구현하고, 단순히 GridView 형태는 VStack, HStack 조합으로 구현하거나 다른 Framework 를 사용하자. 비교표 구분 iOS 14 iOS 13 비고 공통 .ignoresSafeArea() : 안전영역 무시하기 ignoresSafeArea 로.. 2021. 10. 29.
[SwiftUI] 신규 SwiftUI 프로젝트에서 AppDelegate, SceneDelegate 사용하기 아래 내용은 XCode 13.1 을 기준으로 작성했다. 1. 프로젝트 생성 XCode 13.1 에서 프로젝트를 생성 시 Interface를 SwiftUI 로 생성하면, 기본 iOS SDK Target을 15.0으로 한다. 그리고 프로젝트의 시작은 기존 AppDelegate 및 SceneDelegate가 아닌 App 프로토콜을 상속한 프로젝트명+App 구조체를 시작점으로 한다. (참고로 App 프로토콜은 iOS 14 이상에서 사용 가능하다.) import SwiftUI @main struct TestApp: App { var body: some Scene { WindowGroup { ContentView() } } } 2. AppDelegate 및 SceneDelegate 파일 생성 AppDelegate와.. 2021. 10. 29.
[SwiftUI] @State 값 변경 감시하기 기존에는 Toggle, Text Filed, Picker와 같은 기본 제공하는 View에서 Binding 값들이 변경되는 것을 탐지 할 수 없었다. iOS 14에서는 다음과 같은 함수를 제공해주고 있어서 이를 활용하면 된다. @State private var isOn = false var body: some View { Toggle("제목", isOn: $isOn) .onChange(of: isOn) { value in print("\(value)") } } iOS13+ iOS 13에서는 onChange 함수가 없기 때문에 Binding 을 확장해서 사용하면 된다. extension Binding { func didSet(execute: @escaping (Value) -> Void) -> Binding.. 2021. 10. 28.