UICollectionVIew를 이용하여 위의 카테고리 컬렉션 뷰를 만들던 중에 아래와 같은 메시지가 촤르륵 떴다.

속도도 느리게 만들었고 무엇보다 이런 오류 로그를 보는 것 자체가 싫어서 어떻게 하면 지울 수 있는지 알아보았다. 

 

The behavior of the UICollectionViewFlowLayout is not defined because:

the item height must be less than the height of the UICollectionView minus 
the section insets top and bottom values, minus 
the content insets top and bottom values.

the item width must be less than the width of the UICollectionView minus 
the section insets left and right values, minus 
the content insets left and right values.

 

해석하자면 (UICollectionView의 height) - (section Inset top and bottom values) - (content insets top and bottom values) 보다 item의 Height가 더 작아야 한다는 것인데 ... 해석을 해도 어떤 조치를 취해야 할 지 모르겠어서 이것저것 구글링을 해보았다.

그렇게 몇 번의 삽질 끝에 원인과 해결점을 찾았고 그것을 여러분께 공유하려 한다. 

 

먼저 이런 오류가 나오게 된 데에는 아래의 이유가 있었다.

UICollectionViewFlowLayout을 적용하면서 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 를 구현하지 않았다는 것.

 

그래서 아래의 메서드를 적용했더니 오류메시지 없이 잘 진행됐다.

이 때, 필자의 상황은 collectionView 자체의 height를 30으로 Constraint한 상태였기 때문에 CGSize의 Height 값을 저렇게 준 것이다.

extension ListStoreViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: 15, height: 30)
    }
}

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom