ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [WWDC 2020] Advances in UICollectionView
    Programing/iOS 2021. 8. 11. 21:50

    안녕하세요! 🙋‍♂️ 5anniversary입니다!

     

    이번 포스팅에서는 WWDC 2020에서 소개된 UICollectonView를 좀 더 잘 사용하는 방법에 대해서 알려주는 세션!

     

    Advances in UICollectionView 를 볼거에요!!

     

    UICollectionView에 사용되는 API는 크게 3가지가 있는데요,

     

     

    iOS 12 전까지 사용되던 API들이구요, 

     

     

    요 API들이 iOS 13 에서  소개된 API입니다.

     

    그리고

    iOS 14에서 소개된 API인데요, 이번 시간에서는 이 차이와 사용 방법에 대해 간단히 알아볼거같아요!

     

    이번 세션에서 API들에 대해 설명을 해주면서 보여주는 화면인데요,

     

    첫번째 라인에는 가로형,

    두번째는 확장이 가능한 expendable Cell이 있어요 해당 부분은 iOS 14에서 처음 소개된거라고 하네요, 

    세번째는 는 일반 테이블뷰와 비슷한 유형이죠?!

     

    호호... 시작해보겠습니다.

     

    iOS 13에서 소개된 Differable Data Source는 고유한 섹션 및 식별자를 통해 해당 UI를 캡슐화 해주게 되는데요, UICollectionView를 업데이트 할 때 먼저 새 스냅샷을 만들어 현재 UI상태로 채운 다음 데이터 원본에 적용을 한다...하네요.

     

    그리고 Differable Data Source 요것은 개발자가 추가적인 작업을 하지 않아도 Data들의 차이를 계산하고 자동으로 애니메이션을 실행시켜 준다고 합니다. 해당 API에 대해서는 Advanceds in UI Data Source 세션에서 다루어 준다고 합니다...

    나중에...다루어보기로(프로미룸러

     

    iOS 14에서는 Section Snapshot이라고 하는 새로운 스냅샷 유형을 추가해줬는데요, 이거슨... 이름에서 알수있듯이 CollectionView에서의 섹션에 대한 데이터를 캡슐화 시켜주는데요.

     

    요 이유는, 

    1. 데이터 소스를 섹션 단위로 데이터를 만들어 쉽게 구성하기 위함.

    2. 렌더링 레이아웃 스타일 UI를 지원하는데 필요한 계층적 데이터 모델링을 허용하기 위해서...

    라고 하네요

     

    여기에 대해서 더 알아보고 싶다면 Advanceds in Differable Data Source 여기로... 이 세션도 추후에 다뤄보도록...합니다...

     

    ----

     

     

    Compositonal Layout은 iOS 13에서 소개가 되었고, Composable하고 Fast하고 Section Specific Layout하게 구성을 할수가 있습니다. 그리고 orthogonal scroll(직각의 스크롤)을 할수도 있어요. 요 사항에 대해서 좀 더 알아보고 싶다면 Advanceds in Collection View Layout 2019년도 세션인데 검색이 안되네요...

     

    iOS 14의 경우에는 구성 레이아웃을 기반으로 Lists라고 하는 새로운 기능을 추가했다고 하네요.

     

    이 Lists를 사용하면 UITableView와 유사하게 UI를 그릴수있고, Swipe action과 공통 셀 레이아웃과 같은것을 적용할수가 있다고 합니다.

     

    그리고 Lists는 Compositional Layout 위에 작성되어 섹션별로 Lists와 다른 종류의 레이아웃들을 쉽게 섞어 줄수가 있네요, 요 레이아웃을 사용하게 되면 목록스타일의 레이아웃을 만드는게 굉장히 간단해진다는데요, 

    let configuration = UICollectionLayoutListConfiguration(appearance: .insetGrouped)
    let layout = UICollectionViewCompositionalLayout.list(using: configuration)

    요렇게 작성하게 되면 insetGrouped 모양을 가지게 UICollectionView 레이아웃을 만들어줍니다. ㅎㅇㅎ

     

    흠... 사용을 할지는 모르겠지만?!

    해당 부분에 대한 추가적인 내용을 보고 싶다면 Lists in UICollectionView로 가서 보시면 되겠습니다... (점점 쌓여가는 과제...)

     

    iOS 14의 경우에는 셀 등록이라는 새로운 API로 셀을 구성할수있는 새로운 방법이 있는데요, 요거슨!

    기존에 셀을 등록하는(클래스나 nib파일을) 귀찮은 절차를 제거할수가 있다는데요?! 오... 코드를 보겠습니다...

     

    let reg = UICollectionView.CellRegistration<MyCell, ViewModel> { cell, indexPath, model in
        https://developer.apple.com/wwdc20/10097
    }
    
    let dataSource = UICollectionViewDiffableDataSource<S,I>(collectionView: collectionView) {
                         collectionView, indexPath, item -> UICollectionViewCell in
        return collectionView.dequeueConfiguredReusableCell(using: reg, for: indexPath, item: item)
    }

     오오 결국에는 register와 item을 지정해주는것과 비슷한거 같기는 하지만

     

    이것을 Datasource안에서만 관리해주는게 아니라는것이 좋은거 같네요?!

     

    다음에는 표준 레이아웃이 구성되어있는 UIListContentConfiguration를 알려주시는데요!

     

    이것은 굉장히 간단하게 리스트 레이아웃을 잡아주는거 같아요!! 저는 사용하지 않을거같기 때문에... 넘어가겠...

     

    좀 더 자세한 내용이 궁금하다면 Modern cell configuration 를 확인해주시면 되겠습니다!

     

    오늘 쌓은 과제들은...천천히 포스팅해보는것으로 하고... 이만 가보겠습니다... 호호

     

    댓글

Designed by Tistory.