본문 바로가기

전체 글

[SwiftUI] Menu 관련 버그 한 화면에 Menu와 Modal View(.fullScreenCover, .sheet 등)를 같이 사용하는 경우, 해당 Modal View가 dismiss 되었을 때 Menu를 두번 탭해야 정상 작동하는 버그가 있습니다. 예제를 한번 볼까요? VStack { Menu { Button { selectedMenu = 1 } label: { Text("메뉴 1") } Button { selectedMenu = 2 } label: { Text("메뉴 2") } } label: { Text("메뉴 버튼입니다") } Text("테스트 화면입니다") .onTagGesture { showModal = true } } .sheet(isPresented: $showModal, onDismiss: nil) { ModalVi.. 더보기
[SwiftUI] SwiftUI로 Naver Map iOS SDK 연동하기 이번에는 SwiftUI로 Naver Map iOS SDK를 연동해서 지도를 띄워보겠습니다. 2022.02.11 기준 Naver Map 최신 버전은 UIKit으로 구현이 가능합니다. 즉, UIView로 구현된 지도를 SwiftUI View로 사용하려면 UIViewRepresentable을 사용해야합니다. UIViewRepresentable에 대한 포스팅은 여기를 확인해주세요! http://.https://k00kie-dev.tistory.com/1 import Foundation import SwiftUI import NMapsMap import CoreLocation struct MapView: UIViewRepresentable { @Binding var selectedLocation: NMGLatLn.. 더보기
[SwiftUI] SwiftUI View 캡쳐하기 (UIGraphicsImageRenderer) SwiftUI View를 캡쳐하는 기능이 필요할 때가 있습니다. 앱에 화면 캡쳐 기능을 제공하는 것이 대표적인 사례겠죠? 저는 Naver Map SDK를 사용하면서 marker 이미지로 제가 만든 SwiftUI View를 사용하기 위해 구현해보았습니다. SwiftUI로 Naver Map을 사용하는 포스팅도 추후 올려보겠습니다. 아쉽게도 SwiftUI View를 바로 캡쳐하는 방법은 현재 제공되지 않고 있습니다. 대신, UIView를 캡쳐하는 방법은 있죠. UIKit을 써보신 분들은 아실 수도 있겠네요. 바로 UIGraphicsImageRenderer를 사용하는 방법입니다. let infoWindowView = InfoWindowView(name: fishingArea.name, address: addre.. 더보기
[SwiftUI] SwiftUI View를 UIView로 변환하기 (UIHostingController) UIKit의 요소를 SwiftUI View에 통합시켜주기 위해 UIViewRepresentable 과 UIViewControllerRepresentable 을 사용한다면, 반대로 SwiftUI View를 UIView로 변환하기 위해서는 UIHostingController 를 사용합니다 struct InfoWindowView: View { var name: String var address: String? var body: some View { VStack(spacing: 0) { VStack(alignment: .leading, spacing: 0) { Text(name) .font(.custom("NotoSansCJKkr-Bold", size: 13)) .foregroundColor(Color(red:.. 더보기
[SwiftUI] UIViewControllerRepresentable로 ImagePicker (카메라) 사용하기 지난 포스팅에서 소개했던 UIViewRepresentable에 이어, 이번에는 UIViewControllerRepresentable을 사용해보겠습니다. UIViewControllerRepresentable은 UIViewRepresentable과 마찬가지로 UIViewController를 SwiftUI View로 통합시켜주기 위해 사용합니다. 이번에는 UIKit의 UIImagePickerController를 이용하여 카메라를 사용해보겠습니다. 앱에서 카메라를 사용하기 위해서는 먼저 사용자로부터 권한을 획득해야합니다. 카메라 권한 허용 여부를 묻는 팝업을 나타내려면, Info.plist에 카메라를 사용하는 이유를 작성해야 합니다. 이 때, 내용을 명확하게 작성하지 않으면 리젝 사유가 될 수 있으니 주의가 필.. 더보기
[SwiftUI] UIViewRepresentable을 이용한 WKWebView 사용하기 SwiftUI로 앱을 개발할 때, UIKit 코드를 사용해야만 하는 경우가 있습니다. SwiftUI와 UIKit를 혼용하기 위해 세가지 방법들(UIViewRepresentable, UIViewControllerRepresentable, UIHostingController)이 제공됩니다. UIViewRepresentable은 UIKit View를 SwiftUI View에 통합시켜주기 위해 사용하는 프로토콜입니다. 다른 방법들은 나중에 정리하고, 이번에는 WKWebView(본인인증 연동)를 사용하기 위해 UIViewRepresentable을 사용해보겠습니다. UIViewRepresentable 프로토콜을 채택하면 다음 두 가지 메소드를 필수적으로 구현해야합니다. makeUIView → UIView를 생성하는.. 더보기