3가지 각 다른 컬렉션뷰를 활용해 영화 정보를 가져오는 방식을 구현하고자 한다. CompositionalLayout과 DiffableDataSource를 활용해 유연하고 다양한 컬렉션뷰를 구현하는 방식에 대해서 알아보자! 먼저 각 다른 컬렉션 뷰를 활용하기 위해 enum을 활용해 3가지로 섹션을 분류한다.enum Section: Hashable { case banner case horizontal(String) case vertical(String)}enum Item: Hashable { case normal(Content) case bigImage(Movie) case list(Movie)}크게 구성될 배너 부분과 가로로 움직일 호리젠탈, 그리고 밑으로 3가지의 영화가 ..
DiffableDataSource, MVVM, RxSwift 를 사용하는 간단한 프로젝트를 구현해보는 과정에서 데이터 모델링을 구현하고 있었는데 Hashable 프로토콜을 선언해 모델을 구현하는 점이 확인되어 이 개념을 알고 넘어가려고 한다.struct Section: Hashable { let id: String}enum Item: Hashable { case banner(HomeItem) case normalCarousel(HomeItem) case listCarousel(HomeItem)}struct HomeItem: Hashable { let title: String let subTitle: String? let imageUrl: String}이렇게 데이터 모..
오늘은 .There이라는 공유 앨범을 만들어주는 새로운 프로젝트가 시작되어 기록으로 남겨두려고 한다. 이 프로젝트는 처음으로 SwiftUI로만 구현할 예정이며, 나아가 반응형 프로그래밍인 Combine도 활용해 보려고 한다. 먼저 SwiftUI로 UI를 구성하기 시작했는데 UIKit으로 그리는 것보다 훨씬 더 내 스타일이고 오랜만에 정말 재밌게 코드를 작성한 것 같다! 내가 맡은 부분은 메인페이지인 .there 페이지와 .List 페이지의 UI 구성을 맡아 진행하였다.일단 아직 저장되는 데이터는 없기 때문에 더미 데이터를 사용해 채워갈 예정이다. View 분리하며 UI 구성하기SwiftUI를 하면서 가장 좋은 점은 재사용성과 생산성인 것 같다. 이 점을 극대화 할 수 있도록 하나의 뷰 안에서도 세분화해 ..
이번에 TURTLE VOCA를 출시하면서 단어장에 사진을 넣을 수 있는 부분이 있는데 이 경우 이용자의 사진첩에 접근해야하기 때문에 이를 동의하는 과정이 꼭 필요하다. 이를 위해 이전에 구현되지 않았던 권한 안내를 구현하는 과정을 정리하고자 한다. 먼저 Info.plist파일에 안내가 나갈 문장을 넣어준다.Privacy - Photo Library Usage Description"단어장에 이미지를 추가하기 위해 사진 라이브러리에 접근하려고 합니다."이와 같이 사진처럼 값을 넣어주면 된다. 그 다음 PHPickerView가 등장하는 메서드에 권한 안내가 나오는 알럿이 뜨도록 구현해준다.func didSelectImage() { PHPhotoLibrary.requestAuthorization(for: ..
현재 원더보드에 올라와 있는 게시물을 선택하면 이미지를 불러오는 로딩 속도가 상당히 느려서 이용성이 저하되는 문제가 있었다. 이용자 피드백에서도 해당 내용이 거론되었고 내부적으로도 이 부분은 우선적으로 수정해야하는 의견이 많아 얼른 수정해야 한다.이 점을 개선하기 위해 Kingfisher를 활용해서 이미지 캐싱을 손보고 로딩 속도를 개선하고자 한다. 이미지 로딩 로직 수정먼저 이전의 저장되어있는 이미지를 불러오는 구현을 살펴보면func updateSelectedImages(with mediaItems: [Media]) { selectedImages.removeAll() let group = DispatchGroup() for media in mediaItems { ..
1차 앱 승인 이후 DetailView의 UI를 변경하고 이전에 놓쳤던 오류 및 구현을 모두 마무리하고 2차 업데이트 심사를 넣는 것을 마무리로 최종 프로젝트가 거의 마무리 되었다.이후 유저 이벤트를 진행할 예정이며 이 내용을 바탕으로 부족한 점이나 수정해야할 점을 업데이트 해 나갈 예정이다. UI 수정한 내용은 이전 포스팅에서 다뤘으니 이번에는 추가적으로 수정했던 오류 및 구현에 대해서 기록하고자 한다. 지출 페이지 내 삭제 이후 데이터 적용지출 페이지 내 지출 데이터를 삭제 한 이후 데이터가 firebase 내 정상적으로 삭제되는 점을 확인했으나, 삭제 이후 다시 지출 페이지를 확인하는 페이지로 가면 이전에 한번 데이터를 불러온 값이 유지되어 삭제된 데이터가 사라지지 않는 문제가 있었다. 원인을 파악..