이전에 RxSwift에 대한 개념을 한번 정리했으니 이제 중요한 개념을 자세하게 한번 알아보자 RxSwift의 핵심 개념 중 하나는 바로 Observable이다. Observable은 데이터를 비동기적으로 처리할 수 있는 데이터 스트림을 나타내며, 시간의 흐름에 따라 데이터를 방출한다. 이 데이터를 관찰하는 객체는 Observer라고 한다. Observable을 관찰하는 객채는 Observer! 기억하기Observable의 생명주기는 세가지 이벤트로 나눠 진다. 바로바로onNext : 새로운 데이터가 발행될 때 호출되고 여러번 호출 될 수 있다.onError : 에러가 발생하면 호출되고 이 이벤트가 호출되면 스트림이 종료된다!onCompleted : 데이터 스트림이 정상적으로 완료되었을 때 호출되고 이 ..
Swift 5.5부터 도입된 async/await는 기존의 비동기 처리방식인 DispatchQueue나 completionHandler를 사용해 처리했지만 더욱 직관적이고 관리하기 쉽게 만들어 주는 기능이다. 기존의 비동기 처리 방식과 비교해 코드의 가독성과 유지보수성을 크게 향상시킬 수 있다는 장점을 가지고 있다.https://developer.apple.com/videos/play/wwdc2021/10132/ Meet async/await in Swift - WWDC21 - Videos - Apple DeveloperSwift now supports asynchronous functions — a pattern commonly known as async/await. Discover how the ne..
이전까지 PHAsset을 활용해 사진을 가져오고 가져온 사진을 Core Image를 활용해 필터를 적용하는 방식까지 알아봤다오늘은 이미지 편집 과정 중 크롭에 대해서 알아보려고 한다.먼저 EditCropViewModel을 만들어 VM에서 해야할 역할을 만들어 주었다. 이 VM은 이미지의 크롭을 관리하는 주요 속성과 메서드를 가지게 된다.@Published var cropRect: CGRect = .zero@Published var cropApplied: Bool = false@Published var isCropBoxVisible: Bool = true@Published var croppedImage: UIImage?var image: UIImage먼저 속성을 정의해야한다. cropRect는 크롭박스의 ..
오늘은 PHAsset에 이어 Core Image에 대해서 다뤄보려고 한다. 가져온 이미지를 바탕으로 효과를 넣어 사용할 수 있는 Core Image에는 정말 다양한 내용이 있다. 먼저 Core Image는 애플에서 제공하는 아주 강력한 이미지 처리 및 분석 프레임 워크이다. 다양한 이미지의 필터, 변형, 분석 기능을 제공한다. 이 프레임 워크는 GPU 가속을 활용해서 이미지에 효과를 적용할 수 있도록 하고 모든 iOS 버전에서 사용이 가능하다 🙂 여기서 이미지를 처리한다는 개념은 필터를 적용하는건데 input 이미지를 픽셀단위로 검토하고 이미지에 특정한 효과를 적용해서 output 이미지를 만들어내는 것 이다. Core Image 구성요소먼저 주요 구성 요소를 살펴보면CIImageCIImage는 이미지..
요즘 코어 이미지 활용해서 사진 라이브러리 동기화 한 후 편집하는 프로젝트를 진행하면서 가장 많이 공부 했던 PHAsset에 대해서 기록으로 남겨두려고 한다 🙂PHAsset란 무엇인가PHAsset는 iOS 장치 내 Photos 앱에서 관리하는 이미지, 비디오, 라이브 포토 등 데이터를 나타낸다고 생각하면 된다.사진, 비디오 뿐만 아니라 생성날짜, 위치, 미디어 등 여러가지 해당하는 데이터의 세부정보까지 가져올 수 있다. PHAsset 가져오기먼저 PHAsset를 사용하기 전에 이용자에게 사진 라이브러리에 접근할 수 있는 권한을 요청해야한다. 이 권한이 부여되어야 에셋에서 사진 정보를 가져올 수 있게 된다. infoplist에 사진 권한 추가는 여기서 따로 다루지는 않을 예정 그냥 권한 요청에 대한 내용..
오늘은 SwiftUI 에서 자주 만나게 되는 onChange에 대해서 알아보는 시간을 가져보자https://developer.apple.com/documentation/swiftui/view/onchange(of:perform:)먼저 onChange는 뷰의 특정 값이 변경될 때 동작을 수행할 수 있게 해주는 도구라고 보는 편이 이해하기 쉽다 🙂 onChange를 통해 상태 변화에 반응하고 다른 효과를 실행하거나 상태를 업데이트하는 등 다양한 방면에 사용된다. 예를 들어 사용자의 입력이 변화할때 UI를 업데이트하거나 특정 동작을 수행하는데 사용할 수 있다..onChange(of: value, perform: { newValue in // 'value'가 변경되었을 때 실행할 코드})기본적인 사용 문..