SwiftUI
-
PhotoPicker를 구현해 ProfileImage 뷰 구현하기SwiftUI 2023. 6. 10. 20:21
iOS 14.0 에서 PHPickerViewController 가 추가되었습니다. 해당 ViewController를 이용해서 SwiftUI에서 사용할 수 있는 PhotoPicker를 구현하고 이를 이용해 프로파일 이미지 뷰를 구현해 보겠습니다. 기본적으로 ViewController를 SwiftUI에서 사용하기 위해서는 UIViewControllerRepresentable 프로토콜을 구현해 주어야 합니다. 해당 프로토콜은 아래의 두 함수를 구현하도록 하고 있습니다. PHPickerViewController 를 이용해 PhotoPicker 구현하기 func makeUIViewController(context: Self.Context) -> Self.UIViewControllerType func updateU..
-
LibraryContentProvider 로 XCode 라이브러리에 뷰 추가하기SwiftUI 2023. 6. 10. 14:03
iOS 14.0 이상에서 XCode에 새로 만든 커스텀 뷰들을 라이브러리에 추가해서 라이브러리에서 자신의 뷰를 가져올 수 있는 방법을 제공하고 있습니다. 이전에 생성한 CachedAsyncImage를 아래와 같이 라이브러리에 추가하는 거죠. 방법은 간단합니다. LibraryContentProvider 프로토콜을 준수하는 구조체를 아래와 같이 작성만 해주면 끝입니다. import SwiftUI struct LibraryViewContent: LibraryContentProvider { let url = URL(string: "http://placehold.it/120×120&text=image4") var views: [LibraryItem] { LibraryItem(CachedAsyncImage(url:..
-
AsyncImage 구현하기(2)SwiftUI 2023. 6. 9. 23:25
여기에서는 URLCache 를 이용해 CachedAsyncImage에 캐시기능을 추가하겠습니다. 우선 CachedAsyncImage에서만 사용하기 위해 해당 파일을 CachedAsyncImageViewModel에 fileprivate로 ImageCache 클래스를 구현합니다. fileprivate final class ImageCache { static let shared = ImageCache() let cache: URLCache private init() { self.cache = URLCache(memoryCapacity: 32*1000*1000, diskCapacity: 100*1000*1000) } //캐시에 UIImage가 있는 경우 이미지를 반환하고 없는 경우 nil을 반환 func loa..
-
AsyncImage 구현하기(1)SwiftUI 2023. 6. 9. 16:25
iOS15에 추가된 AsyncImage가 추가되었습니다. 이제 URL만 입력해 주면 알아서 해당 위치의 AsyncImage에 url 위치의 이미지를 다운로드 해줍니다. 해당 AnyncImage는 SwiftUI 특성 상 화면에 사라지면 소멸되고 다시 화면에 표시되려면 재 생성해야 하는데 캐시 기능이 없는 AsyncImage는 네트워크에서 이미지를 다시 다운로드 해야하는 단점이 있습니다. 또한 iOS15 이전에서는 사용할 수 없습니다. 그래서 여기에서는 AsyncImage 정의를 이용해서 동일한 타입의 CachedAsyncImage 를 구현 해 보도록 하겠습니다. 먼저 AsyncImage의 아래와 같은 세개의 초기화 함수가 있습니다. public init(url: URL?, scale: CGFloat = 1..
-
Core Buletooth 사용하기SwiftUI 2023. 6. 6. 20:52
Core Bluetooth 프레임워크는 앱이 저전력을 지원하거나 흔히 클래식이라고 부르는 BR/EDR 장비와 통신을 지원하기 위한 프레임워입니다. 중요한 점은 Core Bluetooth 에 클래스는 상속을 받아 재정의를 하면 안된다고 공식 문서에 나와 있습니다. 여기서는 iOS 디바이스로 주변 불루투스 장비를 검색하는 SwiftUI 앱을 구현해 보겠습니다. 우선 BLE에 대해 간단히 살펴 보겠습니다. BLE는 Bluetooth Low Energy 의 약자로 저 전력 모드를 지원하는 블루투스를 의미합니다. 이 후 기존의 블루투스 관련 프로토콜은 클래식 이라는 이름으로 사용되고 있습니다. 이전 클래식 버전이 저 지연과 고 데이터 전송을 위해 발전되어 왔다면 BLE는 얼마나 적은 전력을 소모하느냐는 관점에서 ..
-
Maintaining the adaptable sizes of built-in viewsSwiftUI/SwiftUI 애플 문서 한글화 2023. 6. 5. 16:59
SwiftUI Concept Tutorials SwiftUI에서 제공하는 뷰를 적응가능 한 크기로 유지하기 앱이 표시할 컨텐츠의 타입에 따라 모든 디바이스에 뷰에 유동적으로 레이아웃이 적용되도록 유지해야 합니다. Swift UI가 뷰의 크기를 자체적으로 결정하는데, 적응성(뷰의 크기가 어떠하든 뷰가 해당 디스플레이에 유동적으로 표시되는 특성)을 유지하면서 기본적으로 제공되는 뷰의 크기를 수정하는 방법을 이해해하는 것이 레이아웃을 유동적으로 동작하게 하여 코드를 복잡하지 않게 만드는 가장 좋은 방법입니다. 텍스트와 심볼 텍스트와 심볼은 앱의 레이아웃을 정의할 때 NavigationLink, Button Label, Table 등에서 사용자에게 정보를 전달하는 중심적인 역할을 합니다. 정보를 표시하거나 다른..
-
Exploring the structure of a SwiftUI appSwiftUI/SwiftUI 애플 문서 한글화 2023. 6. 5. 15:40
SwiftUI Concept Tutorials 이 문서는 https://developer.apple.com/tutorials/swiftui-concepts/exploring-the-structure-of-a-swiftui-app 을 한글화한 문서로 SwiftUI를 처음 접할 때 가장 먼저 읽어봐야 하는 내용입니다. SwiftUI 앱의 구조 속으로 SwiftUI는 앱의 사용자 인터페이스(UI) 즉 화면을 구성하는 데 도움을 주는 선언적(declarative) 프레임워크입니다. SwiftUI의 구조를 형성하는 가장 기본이 되는 요소는 App, Scene 및 View 프로토콜입니다. 이 샘플은 코드 라인을 살펴보고 발생한 일과 그 이유를 설명함으로써 이러한 프로토콜을 소개합니다. Section1 앱 구조체는 ..
-
Migrating to new navigation typesSwiftUI/SwiftUI 애플 문서 한글화 2023. 6. 5. 14:48
Article 이 문서는 https://developer.apple.com/documentation/swiftui/migrating-to-new-navigation-types 에 대한 한글화 문서입니다. 새로운 네비게이션 타입으로 전환 NavigationView를 Navigation Stack 이나 Navigation Split View 로 전환하여 앱의 탐색 동작을 향상시키기 Overview 앱의 최소 배포 타겟이 iOS 16, iPadOS 16, macOS 13, tvOS 16 또는 watchOS 9 이상인 경우 NavigationView를 NavigationStack 이나 NavigationSplitView로 교체하세요. 이를 사용하는 방법은 탐색(Navigation)을 한 열에서 수행하는지 아니면..