본문 바로가기

iOS/UIKit

[UIKit] iOS 14에서 Compositional Layout 빈 공간 생기는 이슈 해결

반응형

이번에 UICollectionView에 Compositional Layout 샘플코드를 작성해봤다.
DiffableDataSource도 같이 사용했다.

다음과 같은 UI를 구현하였다.
RPReplay_Final1736863622-ezgif com-video-to-gif-converter

이미지를 보면 알겠지만, 위에 섹션은 가로스크롤 하단 섹션은 세로스크롤로 구성하였다.
가로스크롤 되는 Cell에 컬러값을 넣었지만, 실제로 API 통신 등을 통해 데이터를 불러오고,
불러온 데이터가 없으면 해당 섹션을 보여주지 않도록 구현하려고 했다.

내 지식으로는 데이터가 없으면 datasource에 apply 하지 않기 때문에 해당 영역이 눈에 보이지 않을 것이라고 생각했고,
생각대로 구현 되었다.

수정한 코드 조각은 다음과 같다.

구현된 UI는 다음과 같다. (iOS 18.x.x 환경)
ezgif com-resize

그런데 iOS 14.x.x 환경에서는 아예 가려지지 않고 영역이 이상하게 잡혀있는 것을 확인했다.
ezgif com-resize (1)

난 정말 어이가없었다..

정말 삽질을 오래하며 이것저것 바꿔보고 했는데, 결론은 이녀석 때문이였다.
Section Layout을 설정할 때 가로스크롤을 위한 옵션을 하나 주려고 다음과 같은 코드를 작성했다.

해당 코드를 제거하니, 내가 원하는 동작이 되었다.
그런데, 이 코드를 제거하면 가로스크롤이 되지 않아서 방법을 찾아야했다.
음.. 뭐 아이템의 갯수가 1개 이상일 때만 해당 옵션을 주는 방식으로 구현했다.
개개인의 기존 코드가 어떻게 되어있을 지는 모르겠지만.. 이렇게 변경하였다.

암튼 해결해서 다행이고 짜증나서 포스팅했다..

반응형