Appearance사용해 NavigationBar 커스텀하기(iOS 13.0+)
·
iOS
오늘은 프로젝트 때문에 NavigationBar을 입맛에 맞게 커스텀 해야 했는데 iOS13 이후로 NavigationBar가 변경되어 커스텀 하는데 삽질을 좀 했습니다. 때문에 이번에 삽질했던 과정 및 해결 방법을 기록하기 위해 iOS13부터 변경된 NavigationBar를 커스텀 하는 방법에 대해서 알아보겠습니다. 오늘의 목표 그림과 같은 반투명한 NavigationBar 만들기 먼저, 왼쪽 버튼과 title만 입력하고, 아무 작업도 하지 않은 navigationBar의 기본적인 모습입니다. 그럼 제가 처음 접근했던 방법부터 보여드리면서, 최종적으로 Appearance 사용하여 문제를 해결한 방법까지 순차적으로 작성해 보겠습니다. navigationBar.tintColor = .white // 흰색..
[iOS] 한 방향으로 흐르는 ReactorKit 알아보기
·
iOS
안녕하세요. 이번 글에선 반응형 애플리케이션의 데이터 흐름을 단반향으로 만들 수 있게 도와주는 프레임워크 ReactorKit에 대해 알아보겠습니다. ReactorKit의 정의 ReactorKit의 정의는 ReactorKit Github에 설명되어 있었습니다. ReactorKit은 Flux와 Reactive Programming의 조합입니다. 사용자 작업 및 보기 상태는 관찰 가능한 스트림을 통해 각 계층에 전달됩니다. 이러한 스트림은 단방향입니다. 뷰는 작업만 내보낼 수 있고 리액터는 상태만 내보낼 수 있습니다. 위와 같이 ReactorKit은 Flux 아키텍처를 채택하고 있으며, 데이터 흐름이 단 반향으로 흐르는 아키텍처를 Flux라고 칭합니다. 위 이미지와 같이 View에서 Action이 발생하면, ..
[iOS] Clean Architecture 파헤치기
·
iOS
안녕하세요.오늘은 Clean Architecture에 대해 알아보겠습니다.Clean Architecture 란?옛날 소프트웨어를 설계할 때, 많은 부분 하드웨어의 설계 방식을 많이 가져왔다고 합니다.하지만, 하드웨어와 소프트웨어의 가장 큰 차이점은 하드웨어는 한번 설계할 때 완벽히 설계하여 제품 출시 이후 오점이 없어야 합니다. 오점이 있다 하더라도, 이는 수정하기가 힘들죠.하지만, 소프트웨어는 버그가 생기면, 수정하여 다시 출시할 수 있고, 새로운 기능이 필요하다 생각되면, 추가하여 다시 출시할 수 있습니다.정리하면, 하드웨어는 설계 단계부터 완벽해야 하지만, 소프트웨어는 언제든 확장, 수정이 될 수 있도록 유연한 설계가 필요합니다.유연한 소프트웨어 설계를 위해 Clean Architecture와 같은..
[iOS] Coordinator Pattern
·
iOS
안녕하세요. 오늘은 Coordinator Pattern에 대해 알아보겠습니다. 먼저, Coordiantor가 무엇인지 알아보겠습니다. Coordinator 란? iOS를 공부하다 보면, 어느 순간 MVC, MVVM, MVP, VIPER 등 여러 Architecture를 접하게 됩니다. 여기서 MVC-C, MVVM-C 등 뒤에 C가 붙는 것을 보신 적이 있으시다면, C가 Coordinator를 의미하게 됩니다. 또한 Coordinator는 VIPER 패턴의 R(Router)과 같은 역할을 수행합니다. 즉, Coordinator는 화면 간 전환을 담당합니다. 좀 더 자세히는 해당 화면(ViewController)에 필요한 의존성을 주입하고, ViewController 객체를 생성해 화면을 전환하는 역할을 수..
[iOS]PhotoKit 알아보기(최종)
·
iOS
이번 주제는 PHImageManager, PHAssetChangeRequest, PHAssetCollectionChangeRequest, PHFetchResult 객체들에 대해서 알아보겠습니다. 이번 글을 읽기 전 PHAsset과 PHAssetCollection에 대해 아직 보지 못하셨다면, PhotoKit 알아보기(2) 글을 참고해 주세요. 먼저, PHAsset과 PHAssetCollection는 직접 수정할 수 없으며, 수정이 필요한 경우 각 PHAssetChangeRequest, PHAssetCollectionChangeRequest 객체를 이용해야 한다고, 이전 글을 통해 말씀드렸습니다. 하나씩 순서대로 알아보겠습니다. PHAssetChangeRequest 일단 PHAsset를 편집하려면, PHP..
[iOS]PhotoKit 알아보기(2)
·
iOS
PhotoKit 통해 기기 사진 라이브러리에 접근 권한을 받아오는 방법에 대해서 PhotoKit 알아보기(1) 글을 참고하시기 바랍니다. 이번 글에서는 부여받은 권한을 이용하여 기기의 저장된 이미지 Asset을 가져오는 방법에 대해서 알아보겠습니다. 이미지 Asset을 가져오기 위해선 PHFetchResult 객체를 통해 가져올 수 있지만, PHFetchResult 객체를 사용하기 위해선 PHAsset과 PHAssetCollection에 대해 알고 있어야 합니다. 하지만, 두 객체는 PHObject를 상속받기 때문에 PHObject 먼저 알아보겠습니다. PHObject PHObject는 공식문서에 따르면, 직접 인스턴스를 만들거나 사용하면 안됩니다. 하위 클레스인 PHAsset, PHAssetCollec..