apple/iOS, UIKit, Documentation 82

[iOS] UICollectionView에 대해서 알아보기 5편 (북마크 구현 및 모델 관리)

UICollectionView에 대해서 알아보기 5편 (북마크 구현 및 모델 관리) 이번에는 bookmark 기능을 구현해 볼 예정이다. 이전에도 북마크를 구현했었고, 모델을 잘 만들어서 관리하고 있었다. 그러니까 기록용의 의미가 더 큼! UI 우선 모델을 변경했다. 서버에서 내려오는 데이터는 id, name, avatar, job, age뿐이지만, isBookmark를 추가해서 북마크 여부를 나타내는 프로퍼티를 만들었다. Equtable을 채택해서 멤버의 구조체의 5가지 정보가 다 같으면 같은 객체로 판단하게 했다. 여기 MemberAPI가 Member에 해당하는 조합을 일정하게 주는게 아니라, id, name, avatar, job, age를 랜덤하게 조합해서 주는것 같았다. id는 고유값이 아니라 ..

[iOS] UICollectionView에 대해서 알아보기 4편 (Rx + FlexLayout + PinLayout)

UICollectionView에 대해서 알아보기 4편 (Rx + FlexLayout + PinLayout)  이번에는 RxSwfit + MVVM + FlexLayout + PinLayout을 사용해서 구성해보자. FlexLayout 및 PinLayout이 성능도 좋고, 대세인 감이 있어서 학습하고자 함.이미지 라이브러리도 Kingfisher와 SDWebImage 주로 사용하는데 Nuke가 대세인 것 같아서 이것도 병행해서 학습 SwiftUI + Combine만 사용하다가 RxSwift 오랜만에 사용하니까 확실히 뭐가 많아서 좋다 pin + flex사용할 때 viewDidLayoutSubviews() 호출해야 하는데, 이것만 반드시 주의 내가 보려고 남기는 샘플코드  오픈소스 링크https://gith..

FlexLayout 'YGEnums.h' file not found Error

FlexLayout 'YGEnums.h' file not found Error 위 제목으로 이슈가 발생한다면 매우 간단하게 처리할 수 있음.SPM으로 사용할 때 발생  해결 방법1. 프로젝트 build setting으로 가서 2. 공식문서에서 안내하는 형태로 수정   요즘 cocoapod에서 SPM으로 넘어가면서 아직은 환경 설정쪽 관련해서는 부족한게 많다고 느낌.아무튼 해결 방법은 공식 문서에 README.md 영역에 적혀 있는대로 고고!   (참고) 해당 이슈와 관련해 깃헙에 등록된 이슈https://github.com/layoutBox/FlexLayout/issues/203

[iOS] SwiftUI SceneDelegate, AppDelegate 변경

SwiftUI SceneDelegate, AppDelegate 변경 해당 포스팅은 실제 프로젝트를 그대로 가져왔습니다. 따라서 네이밍이나 주석 등 불편한 부분이 있을 수 있습니다 자 이 포스팅을 왜 쓰냐면 SwiftUI 기반으로 프로젝트를 진행중인데, window를 변경해야하는 경우가 생겼음. 근데, 이게 기존에 SwiftUI에서 제공되는 WindowGroup을 사용하기에 자료도 넘 적고, 생각보다 코드관리도 잘 안되고 불편한게 너무나도 많았음. 그래서 많은 고민 끝에, SwiftUI에서 SceneDelegate와 AppDelegate를 채택해서 사용하기로 함. 이게 무슨말이냐면 기존에 처음에 SwiftUI로 프로젝트를 만들면 이렇게 나타날 것이고, Scene은 보다시피 ScenePhase를 통해서 관리..

[iOS] UICollectionView에 대해서 알아보기 3편 (동적 Cell)

UICollectionView에 대해서 알아보기 3편 ✅ 이번에는 CollectionView를 이용하여 height을 동적으로 구성하는 방법에 대해서 알아보자. 이 부분에 있어서는 여러개의 구글링을 하면서 여러개의 포스팅을 찾아보았다. - dummyCell 방법이 가장 흔한 것 같은데, 잘 안되었다. - 그래서 이 방법 사용 고고! - dummyCell의 경우에는 내 코드를 가져가서 리팩토링해서 알려주면 좋겠다,, 누군가 소스코드 🌿 결과물 🌿 ✅ 코드 /// 셀의 레이아웃 정보를 구성 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt ..

[iOS] 시뮬레이터에서 Remote Notification (푸시알림)

[iOS] 시뮬레이터에서 Remote Notification (푸시알림) 오늘은 시뮬레이터에서 푸시 알림을 날리는 방법을 알아봅시다. 1. 시뮬레이터를 실행한 상황에서 터미널을 열고 아래의 코드를 실행해주세요. xcrun simctl list devices | grep Booted 2. 노티피케이션을 보낼 파일을 준비해주세요. - 제가 만든 파일을 다운 받으셔도 좋습니다. 3. 노티피케이션 쏘기 xcrun simctl push {디바이스 아이디} {앱 번들} {파일 경로} // 👇🏻 예시 xcrun simctl push 12345678-1A2B-3B4D-56C1-123A456B789C com.notication.lgvv /User/Desktop/test.apns // 성공하면 터미널에 Notificati..

[iOS] UICollectionView에 대해서 알아보기 2편

UICollectionView에 대해서 알아보기 2편 이번에 해볼 작업들 1. 여러개의 섹션 헤더 및 푸터 만들어보기 2. 헤더에 이미지 넣기 3. 리프레시 컨트롤 넣기 4. 우측에 리프레시 넣기 5. 페이지네이션 (해결하지 못한 부분) - 헤더의 배너 부분을 pageViewController처럼 구현하고자 하였으나 아직 방법을 못찾음 - collectionView에 refreshControl을 달아서 사용자가 손을 떼는 순간에 이벤트가 들어가게 하려고 했으나 실패 입니다. 자료에 대한 소스코드 입니다. 사용한 Swift Package - RxSwift 6.5.0 - Snapkit 5.6.0 - RxGesture 4.0.4 1. 여러개의 섹션 헤더 및 푸터 만들어보기 컬렉션 뷰에서 섹션 헤더와 푸터를 만..

[iOS] UICollectionView에 대해서 알아보기 1편

UICollectionView에 대해서 알아보기 1편 이 문서를 작성하는 이유는 개인적으로 TableView보다 CollectionView가 범용성이 더 좋다고 생각하고 있습니다. 테이블 뷰를 컬렉션 뷰로 변환해야할 때 드는 비용을 생각했을 때, 그냥 컬렉션 뷰로 만드는게 더 낫다고 판단했습니다. 그리고 무엇보다도,, 이 문서를 정리하는 가장 큰 이유는 MVVM패턴을 기본으로 개발을 진행했지만, Cell은 늘상 MVC로 작업해 왔습니다.(그 이유는 아마도, Cell에 많은 정보가 담겨본 적이 없었기 때문) ReactorKit을 공부하면서 Cell왜 굳이 Reactor가 필요한가 싶었는데, RxTodo하면서 보니까 필요하더군요! 아무튼 컬렉션뷰를 처음부터 잘 정리해 봅시다!! (목표) - UICollect..