apple/UIKit & ReactiveX

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

lgvv 2024. 6. 18. 23:49

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

 

UITableView 혹은 UICollectionView를 사용할 때 reloadData()가 아니라 특정 섹션만 업데이트하는 reloadSections()를 사용할 수 있음.

 

특정 섹션만 업데이트 하는 것은 이점도 존재하나, 애니메이션이 들어가게 되어서 원하는 UX 결과물이 아니거나, 방송 실시간 채팅처럼 매우 빠른 속도로 데이터가 들어와 UI를 업데이트가 진행되는 경우 UI가 블락되거나, 심지어는 크래시가 발생하기도 함.

 

Task { @MainActor [weak self] in
   guard let self else { return }
   UIView.performWithoutAnimation {
      self.reloadSections(indexSet)
   }
}

 

애니메이션 없이 실행하는 코드!