본문 바로가기

Dev/iOS22

[SwiftUI] iOS14 이상 신규 프로젝트에서 기존 AppDelegate 에서 수행했던 작업 수행하기 XCode에서 Interface를 SwitfUI로 프로젝트 앱을 생성하면 기본적으로 App 프로토콜을 상속받아 WindowGroup를 사용하도록 구성되어 있습니다. 그렇기 때문에 기존에 Push Notification Delegate같은 작업을 사용하기 위해서는 UIApplicationDelegateAdaptor 프로퍼티 래퍼를 사용해야 합니다. 이를 사용하여 기존 UIKit 앱 델리게이트 클래스를 SwiftUI 앱에 통합할 수 있습니다. 이를 통해 UIKit으로 작성된 기존 앱 델리게이트의 기능을 활용하고 이를 SwiftUI와 함께 사용할 수 있습니다. UIApplicationDelegateAdaptor를 사용하는 주된 이유는 SwiftUI의 앱 프로토콜에서 사용할 수 없는 앱 델리게이트 메서드 및 프.. 2023. 4. 3.
[SwiftUI] iOS13 Carousel View struct CarouselView: View { private var numberOfItems: Int private var content: Content @State private var currentIndex: Int = 0 init(numberOfItems: Int, @ViewBuilder content: () -> Content) { self.numberOfItems = numberOfItems self.content = content() } var body: some View { GeometryReader { geometry in HStack(spacing: 0) { self.content .frame(width: geometry.size.width, height: geometry.size.h.. 2023. 2. 14.
[SwiftUI/Combine ]SwiftUI Combine을 활용한 Network 매니저 클래스 활용 Combine 프레임워크는 비동기적인 작업을 처리하는 데 매우 효과적인 도구입니다. MVVM 패턴에서의 각 구성 요소는 다음과 같습니다. Model: 앱의 데이터를 나타냅니다. View: 사용자에게 데이터를 표시합니다. ViewModel: Model과 View 간의 중개자 역할을 합니다. 1. Netwokr Model Class 생성 네트워크 API 클래스는 Model에 해당하며, ViewModel에서 호출됩니다. 따라서, API 클래스에서는 네트워크 요청을 만들고 응답을 처리하는 로직을 작성해야 합니다. 다음은 Swift Combine과 MVVM 패턴을 사용하여 네트워크 API 클래스를 만드는 예시입니다. class NetworkService { enum NetworkError: Error { case.. 2022. 3. 25.
[SwiftUI] iOS 13에서 ProgressView 사용하기 ProgressView는 iOS 14에서 생긴 View 이기 때문에 iOS 13에서는 UIViewRepresentable을 이용해서 구현해서 사용한다. iOS 13용 ProgressView struct ActivityIndicator: UIViewRepresentable { @Binding var isAnimating: Bool let style: UIActivityIndicatorView.Style func makeUIView(context: UIViewRepresentableContext) -> UIActivityIndicatorView { return UIActivityIndicatorView(style: style) } func updateUIView(_ uiView: UIActivityIndic.. 2021. 11. 10.