본문 바로가기

iOS

UICollectionView - invalidateLayout()

invaildateLayout()

 

직역하면 현재 레이아웃을 무효화하고 레이아웃 업데이트를 트리거합니다.

기능은 레이아웃 업데이트 사이클에 새롭게 레이아웃을 업데이트 하는 메서드다.

 

비슷한(?) 기능으로는 reloadData()가 있지만 invaildateLayout은 기존 데이터는 건들이지 않고 레이아웃만 업데이트하는 메서드다.

또한 레이아웃 업데이트를 '트리거' 하는거라 동일한 코드 블럭 안에서 여러번 호출 할 수 있다.

 

단, iOS 13에서 디바이스를 가로 <-> 세로 모드 전환 할 때 메서드를 호출하면 안먹힐 수 있다(?)

간단한 해결 방법으론 VC의 라이프 사이클 중 viewWillTransition(to:with:) 에서 invaildateLayout()를 호출하면 잘 먹는다.