CollectionView 9

UICollectionView Sticky Header

UICollectionView Sticky Header  UITableView처럼 헤더를 붙게 해달라는 요청이 들어왔는데, 해당 키워드로 검색했을 때UICollectionViewFlowLayout을 커스텀 해서 만드는 글들이 많아서 작성 if let layout = self.collectionViewLayout as? UICollectionViewFlowLayout { layout.sectionHeadersPinToVisibleBounds = true // 헤더를 고정}  UITableView처럼 헤더를 붙게 사용할 수 있음.

[UIKit] reloadSections에서 애니메이션 없애는 방법

reloadSections에서 애니메이션 없애는 방법 UITableView 혹은 UICollectionView를 사용할 때 reloadData()가 아니라 특정 섹션만 업데이트하는 reloadSections()를 사용할 수 있음. 특정 섹션만 업데이트 하는 것은 이점도 존재하나, 애니메이션이 들어가게 되어서 원하는 UX 결과물이 아니거나, 방송 실시간 채팅처럼 매우 빠른 속도로 데이터가 들어와 UI를 업데이트가 진행되는 경우 UI가 블락되거나, 심지어는 크래시가 발생하기도 함. Task { @MainActor [weak self] in guard let self else { return } UIView.performWithoutAnimation { self.reloadSections(in..

iOS CompositionalLayout (UICollectionView)

iOS CompositionalLayout (UICollectionView) 공식문서를 열었는데 샘플코드가 14.0 이상으로 나옴. - 글 제일 하단에 참고 부분에 있음취업 준비하면서 13.0을 기준으로 공부하고 있어서 이를 기준으로 작성 CompositionalLayout은 다행히도 13.0 이상에서도 사용이 가능. 이전에는 DataSource만 SnapShot을 사용하고 레이아웃은 FlowLayout을 사용했었는데, 이 부분마저도 공부해보려고 함. 그동안 FlowLayout 만 사용했던 이유는 익숙해져서 Carousel 등 커스텀 구현이 용이하고 서비서적으로 막히는 부분이 없었기 때문인데, 새로운 부분도 알고 갖추면 더 좋을 것으로 기대됨. 목차1. UI결과물2. 레이아웃 코드3. 레이아웃 이론 학..

[iOS] UICollectionView에 대해서 알아보기 6편 (Realm, async, await, Delegate)

UICollectionView에 대해서 알아보기 6편 (Realm, async, await, Delegate) 드디어 6편이다! 올해 봄, 기본기의 부족함을 너무 크게 느껴서, 기본기부터 다시 돌아보는 시간을 가졌는데, 이번에 Realm과 FelxLayout, PinLayout 등을 학습하면서 확실히 이전보다 더 빠르고 잘(?) 이해가 되는 것 같다. 모든 코드는 SPM으로 빌드가 가능한 상태로 올려드립니다. (주요내용) 이번에는 Realm과 Delegate를 활용해서 어떻게 처리하는지 알아보고 async, await을 활용해서 클로저를 없애고, RxSwift랑 잘 묶어보자! 🌿 UI 결과물 🌿 셀 내에 업데이트 버튼이 위치한다. 즉, 셀 내에서 CRUD작업 중 UD에 해당하는 작업을 처리한다. (CR은..

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

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

UICollectionView 공부하기 1편

UICollectionView 공부하기 1편 최근에 UITableView를 지양하고 UICollectionView만 사용하고자 한다. UITableView가 UICollectionView보다 단순해서 코드 개발도 빠르고 단순해서 좋다고 생각했는데, 프로젝트 과정에서 UICollectionView의 UI 요구사항이 생기면 UITableView의 코드를 UICollecionView로 전환하는데 비용이 너무 크다고 느꼈다. 특히, UICollectionView는 UITableView의 요구사항을 모두 구현할 수 있지만,그 역은 성립하기 어렵다 목표UICollectionViewCell 프로그래밍 기반으로 작성UICollectionViewCell 안에 위치한 아이템에 대한 특정 이벤트 처리UICollection..

iOS SnapKit 공식문서로 공부하기 9탄 (UICollectionView 코드로 구성하기 2편)

iOS SnapKit 공식문서로 공부하기 9탄 (UICollectionView 코드로 구성하기 2편) 기본셀이 아니라 내가 만든 커스텀 셀을 사용해서 UI를 구성해보자 전체 코드//// UICollectionViewExample.swift// SnapKitPractice//// Created by Lee Geon Woo on 2021/08/22.//import Thenimport UIKitimport RxSwiftimport RxCocoaimport RxDataSourcesclass MyCollectionViewCell2 : UICollectionViewCell { static let identifier = "cell2" var img = UIImageView().then { ..

iOS SnapKit 공식문서로 공부하기 8탄 (UICollectionView 코드로 구성하기 1편)

iOS SnapKit 공식문서로 공부하기 8탄 (UICollectionView 코드로 구성하기 1편) UICollectionView를 이번에는 구현해보자.이것도 스토리보드로만 사용했어서 코드로 아직 흐름이 익숙하지 않다. 특히, UICollectionView에서 Delegate랑 DataSource를 전부 올바르게 연결해주었는데, UIcollectionView의 사이즈를 FlowLayoutDelegate에서 실수로 0으로 리턴해서 UI가 그려지지 않는 상황이 있었다.익숙하지 않아서 그런데, 이를 더 신경쓰자 ! 전체 코드//// UIcollectionView+RxSwiftExample.swift// SnapKitPractice//// Created by Lee GeonWoo on 2021/08/2..

iOS 서로 다른 해상도를 가진 레이아웃 기기별 적용 안될 때

iOS 서로 다른 해상도를 가진 레이아웃 기기별 적용 안될 때 작업환경Xcode 12.4스토리보드상의 기기 : iphone 11구동하는 디바이스 : iphone 12 mini  문제상황오토레이아웃을 정확하게 연결하였는데, 아이폰12 미니화면에서 우측으로 밀리는 현상 발생.아이폰 12 미니 시뮬레이터에서 아이폰 12 pro Max와 같은 비율을 갖고 출력되고 있었음. 디버깅 시도하기기기에 따라 width와 collectionView.bounds.width를 확인아이폰 12 프로 맥스의 기기 사이즈로 미니에서도 적용되는 거 발견문제점: 컬렉션 뷰 안에 컬렉션 뷰가 들어갈 형태로 구성했는데, 외부 레이아웃이 잘못 작성되어 내부 레이아웃 코드에서 프레임 기반으로 작성한 일부 코드의 문제 발생해결: 기기별 대응되..