[iOS] (WWDC) What's New in UICollectionView in iOS 10 정리

UICollectionView는 앱을 관리하고 뷰의 레이아웃을 원하는대로 만들 수 있는 강력한 클래스입니다.

UICollectionView가 iOS10에서 달라진 점에 대해서 설명하는 세션입니다.

크게 세가지 부분으로 나누어 설명합니다.

  1. Smooth Scrolling

    스크롤을 하는 경우 부드럽게 나타내기 위해서는 프레임삭제,손실(drop frame)을 하면 안됩니다.

    iOS앱이 부드럽게 나타내려면 초당 60프레임으로 실행되는 앱 애니메이션을 위해 노력해야 합니다 .

    즉, 애니메이션이 "부드럽게" 나타나려면 사용자 인터페이스의 주어진 프레임이 16.67ms 미만으로 표시되어야 합니다. (16.67ms * 60 = 1second)

    16.67ms 프레임속도가 넘어가면 프레임손실이 나타나게 됩니다.

    이러한 방법을 해결하기위해 로딩을 줄이고 로딩되지 않는 셀을 사용합니다.

    • UICollectionView에서 셀의 생명주기
      1. prepareForReuse
      2. cellForItemAtIndexPath - 모델에서 셀 데이터를 채우는 작업을 많이 하는 부분
      3. willDisplayCell - 셀이 화면에 표시되려고 할 때 가벼운 준비
      4. 셀이 화면에 나타나고 스크롤이 계속되면서 화면 밖으로 이동하기 시작합니다.
      5. didEndDisplayingCell

    iOS 9이하에서는 10과 차이점은 willDisplayCell의 호출시점이 10에서는 실제로 뷰에 표시되기전까지 호출되지 않도록 변경되고 didEndDisplayingCell메서드가 호출된 후 cell은 즉시 재사용큐에 반환되지 않고 약간 유지되도록 변경되었습니다.

    이러한 변경사항으로 실제로 필요하기전에 그리지 않으므로 병목현상을 피할 수 있게 되었습니다.

    Cell Pre-fetching

    UICollectionView가 기본적으로 셀을 미리 가져오도록 개선했습니다.

    pre-fetching API

  2. Self-Sizing Cells

    iOS 10이전에는 UICollectionViewFlowLayout에 아이템들의 사이즈를 제공하기위해 estimatedItemSize이 존재했습니다.

    하지만 아이템들의 사이즈를 예측하기가 어렵기 때문에 UICollectionViewFlowLayoutAutomaticSize을 제공합니다. 아이템의 사이즈를 과거의 값을 활용하여 자동으로 사이즈를 예측합니다.

  3. Interactive Reordering

    페이징으로 재정렬하는 기능이 추가되었습니다.

    collectionView.isPagingEnabled = true

UIRefreshControl

테이블뷰나 컬렉션뷰 상단으로 드래그할 때 indicator생기면 refresh되는 기능

참고링크

좋은 웹페이지 즐겨찾기