- This topic has 7개 답변, 3명 참여, and was last updated 4 years, 11 months 전에 by .
-
-
-
UICollectionViewFlowLayout 에서는 estimatedItemSize 프로퍼티 값으로 초기에 셀들의 위치를 임시 배치하고 Autolayout 연산이 되어 크기가 변경된다면 그에 따라 Collection View 의 ContentSize 값을 갱신한다고 합니다.
-
Estimate Size 와 estimatedItemSize 가 같은 값인지는 모르겠지만 아예 연관이 없지는 않은 것 같았습니다. WWDC 2014에서 애플이 공개한 iOS 8 업데이트 내용 중 UICollectionView에 Self-sizing 메커니즘이 도입되면서 같이 생길 수 밖에 없는 개념이라는 공통점이 있었습니다.
> 출처: https://blog.skcc.com/2546 [SK(주) C&C 블로그] -
하단에 첨부한 Stackoverflow 링크 에 달린 답변 중에는 “layout.estimatedItemSize = .zero” 라는 코드를 선언하면 Estimate Size 를 none 으로 선언한 것과 같은 효과를 볼 수 있다는 답변도 있었습니다.
-
하지만, 다른 점이 있다면 Estimate Size 는 Xcode 11로 업데이트 되면서 스토리보드의 inspector 에 추가된 속성이었습니다. Stackoverflow 에 찾아보니 UICollectionViewDelegateFlowLayout 를 확장하여 overriding 하려는 개발자들에게 Estimated Size 를 none 으로 속성을 변경한 것이 꽤나 많은 분들에 해결책을 주었던 것 같았어요.
-
만약 Cell 의 크기를 동적으로 변하게 하거나, 코드로 custom 하고 싶을 때, Estimate Size 속성을 none 으로 변경하지 않는 경우에는 뷰가 첫 로드 되었을 때 Cell 이 적절하게 배치되지 않다가 스크롤이 발생하면 제 위치를 찾아가거나, 또는 스크롤이 발생하면 크기가 망가지는 것과 같이 Cell 이 Self-size 를 원하는 대로 하지 못하는 문제가 발생하는 것 같습니다.
> 참고한 Stackoverflow 링크들:
>> UICollectionView always auto sizing cells. Not using sizes returned from delegate
>> How to set UICollectionViewCell Width and Height programmatically
>> UICollectionViewCell content wrong size on first load
>> Why on Xcode 11, UICollectionViewCell changes size as soon as you scroll
-