CollectionView 13

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] UICollectionView CompositionalLayout

UICollectionView CompositionalLayout 공식문서를 열었는데 샘플코드가 14.0 이상으로 나옴. - 글 제일 하단에 참고 부분에 있음 취업 준비하면서 13.0을 기준으로 공부하고 있어서 Xcode를 통해 열어보니까 다행히도 13.0 이상에서도 사용이 가능했음 이전에는 DataSource만 SnapShot을 사용하고 레이아웃은 FlowLayout을 사용했었는데, 이 부분마저도 공부해보려고 함. ✅ SnapShot + FlowLayout 포스팅 2022.09.04 - [iOS] - [iOS] UICollectionView에 대해서 알아보기 7편 (UICollectionViewDiffableDataSource) [iOS] UICollectionView에 대해서 알아보기 7편 (UICo..

apple/iOS 2022.09.18

[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은..

apple/iOS 2022.09.04

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

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

apple/iOS 2022.09.01

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

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

apple/iOS 2022.08.11

[iOS] collectionViewCell 사이에 공백없애기

collectionViewCell 사이에 공백없애기 ✅ collectionViewCell 사이에 공백없애기 아래의 코드를 선언하면 저렇게 빈 공간이 생기게 된다. var calendarList: UICollectionView = { let layout = UICollectionViewFlowLayout() let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) collectionView.register(CalendarCell.self, forCellWithReuseIdentifier: CalendarCell.identifier) collectionView.isScrollEnabled = false collectio..

[iOS15] Device width, height in safeAreaLayoutGuide

Device width, height in safeAreaLayoutGuide ✅ 디바이스에서 width와 height를 구해보자. 아니 이걸 왜 했냐면 내가 다른 앱을 사용하고 있는데, 갑자기 너무 궁금했음 디바이스의 크기는 UIScreen.main.bounds.widht UIScreen.main.bounds.height 위의 코드로 구할 수 있다. 다만, safeArea에 대한 부분을 고려하지 않아서 내가 원하는 UI가 나타나지 않을 수 있다. 특히 collectionView사용에서 더욱 그랬는데 아래와 같이 코드를 작성해주면 safeArea를 고려할 수 있다. func collectionView(_ collectionView: UICollectionView, layout collectionViewL..

iOS Snapkit 09 | CollectionView 코드로 구성하는 법 02

✅ 이번에는 이전 포스팅은 기본 셀을 사용했다면 커스텀 셀을 사용하는 방법에 대해서 알아볼 예정이야. // // File.swift // SnapKit_practice // // Created by Hamlit Jason on 2021/08/22. // import UIKit import RxDataSources import RxSwift import RxCocoa import CoreLocation import Foundation import Differentiator import Then class MyCollectionViewCell2 : UICollectionViewCell { static let identifier = "cell2" var img = UIImageView().then { $0.t..

apple/iOS 2021.08.22

iOS Snapkit 08 | CollectionView 코드로 구성하는 법 01

✅ 이번 시간에는 CollectionView 코드로 구성하기를 알아보자. 어렵진 않았는데, collectionView쪽에 레이아웃을 return을 하지 않아서 에러를 한참동안 ㅠㅠ Then을 적용할 수 있는 다른 방법이 있는지도 알아봐야겠다. ✅ 코드리뷰 // // File.swift // SnapKit_practice // // Created by Hamlit Jason on 2021/08/21. // import UIKit import RxDataSources import RxSwift import RxCocoa import CoreLocation import Foundation import Differentiator import Then class ViewController08 : UIViewCon..

apple/iOS 2021.08.22