iOS
5 posts
🤦🏻

Core ML

애플의 머신러닝 애플의 머신러닝은 통번역, 이미지 인식 등 상당히 강력한 기능을 제공하고 있다. 특징은, 사용자의 기기 안에서만 실행되기 때문에 네트워크에 연결할 필요가 없다는 것이다. 애플의 CoreML을 사용하여, 기존 앱에 쉽게 날개를 달아줄 수 있을 것이다. CoreML 이라는 형식으로 저장된 머신 러닝 모델을 iOS 프로젝트에 추가해보자. ML 위 사이트에서 CoreML 모델을 다운받을 수 있다. 이번에는 이미지 인식기능과 자연어 언어감지 기능을 사용해보겠다. 일반적으로 .mlmodel 파일은 용량이 크기 때문에, gitignore에 추가하는 것이 일반적이다. 이미지 인식 mlmodel을 프로젝트에 추가했다면, 이제 필요한 라이브러리를 import 한다. SqueezeNet 라는 모델을 사용했으며, 코드는 다음과 같다. 모델 파일을 로드하고 MLModelConfiguration를 통해 모델을 설정한다. SqueezeNet 는 이미 제공하는 (학습이 완료된) 이미지 분류 모…

iOS
🤦🏻

얼굴인식 사용하기

얼굴 인식 기능 실습 얼굴 인식 기능은 Vision framework 를 사용한다. vision Framework 여러 명의 얼굴을 인식할 수 있는 이미지를 준비한 뒤, 이미지를 분석할 analyzeImage 함수를 정의한다 얼굴 인식 VNImageRequestHandler An object that processes one or more image analysis requests pertaining to a single image. VNImageRequestHandler에는 core graphics Image, 줄여서 cgImage라는 싱글 이미지를 파라미터로 받는다. 그렇기 때문에 UIImage를 CGImage로 변환하여 VNImageRequestHandler를 초기화 한다. 이를 통해 단일 이미지를 Vision 프레임워크에 요청을 수행할 수 있는 핸들러를 인스턴스화할 수 있다. 그리고 이미지 안에 있는 페이스를 찾기 위한 요청(얼굴인식)인 VNDetectFaceRectangl…

iOS
📀

SwiftUI + UIKit

SwiftUI와 UIKit 같이 사용하기 아직 레거시 코드가 많기 때문에, UIkit 과 SwiftUI 를 같이 사용하는 경우가 있다. SwiftUI with UIKit SwiftUI 프로젝트에 UIKit 를 같이 사용하는 방법에 대해서 알아보겠다. 예를들어 Pdf 파일을 볼 수 있는 PDFKit의 PDFView 는 UIKit으로 되어있는데, 이걸 SwiftUI 프로젝트에서 사용하려면, UIViewRepresentable 프로토콜을 사용하면 된다. 그리고 그 ViewMe 를 SwiftUI 에 추가하면 끝이다. 이번에는 WebKit에 있는, WKWebView() 를 나타내기 위해서 UIViewRepresentable를 사용해보겠다. updateUIView 에서 load(URLRequest) 까지 다 하고나서, SwiftUI 에서는 WebView를 url과 함께 호출하면 된다. UIViewRepresentableContext Contextual information about the…

iOS
🎹

Youtube API, AVFoundation, SharePlay 사용

개요 지난 AVFoundation-시작하기 포스트에 이어, 직접 앱을 개발해보기로 했다. 내가 개발하기로 한 앱의 초기 요구사항은 다음과 같다. 앱 초기 디자인은 Youtube Music App 을 클론 미디어 콘텐츠는 Youtube Search API 를 사용 AVFoundation, AVKit 등을 사용하여 미디어 플레이어 앱 개발하기 [추가] WWDC 2023에 공개된 Share Play의 기능 추가해보기 문제 해결 과정 Draggable Sheet View 구현 과정 How to create Draggable Sheet View? Youtube Music App 의 경우, Draggable Sheet View 가 존재한다. 그래서 처음에는 일반적인 sheet 모디파이어로는 구현할 수 없을 것이라 생각하고 DragGesture 를 추가하는 쪽으로 생각했다. 그러나 더욱 간단한 방법으로 시도해보았다. presentationDetants 값에서 sheet view의 최소 높이와 …

iOS
🦁

MapKit - 현재위치를 사용한 경로 탐색 앱 만들기

MapKit 을 사용한 예제 앱 개발 이번엔 최신 코드인 @Observable 매크로를 사용하여 viewModel 을 사용하였습니다. @Observable는 @Published 를 따로 쓰지 않아도 상태 추적이 가능하도록 해주는 매크로입니다. MapViewModel 생성 @Observable 를 사용한 ViewModel 은 View에서 @StateObject가 아닌, @State로 불러올 수 있습니다. 만약 하위 뷰에서 해당 viewModel 을 사용하고자 한다면? 바인딩도 필요없고, environmentObject도 사용하지 않습니다. ContentView 에서 viewModel 을 완전히 소유하고 있기 때문에, 그냥 변수를 전달하면 됩니다. Search Bar 그리고 이제 Navigation Title 과 검색바(searchable)를 추가하였습니다. 그리고 mapStyle 을 사용하기 위해서, viewModel 에 MapStyle 타입의 프로퍼티를 추가하고, mapStyle …

iOS