collectionView 에서 cell 크기 셋팅 관련 문의드립니다~

4 답변 글타래를 보이고 있습니다
  • 글쓴이
    • 석수
      참가자
      • 글작성 : 6
      • 답글작성 : 2

      안녕하세요..

      위의 사진의 회색부분이 collectionView의 화면이라고 했을때, 오토레이아웃이 leading, tailing 에만 준 상태에서,

      오토레이아웃이 먹힌 상태의 collectionView 안에 4개의 cell을 꽉 차게 한줄로 넣으려고 했는데요

      UICollectionViewDelegateFlowLayout 프로토롤을 적용해서

      sizeForItemAt 함수에서 collectionView 파라미터를 활용해서 cell 마다 let width = ( collectionView.frame.width ) / 4  이렇게 크기를 할당했습니다

      문제는, collectionView를 init하고 초기 cell 데이터를 로드해서 그런지, width 크기가 오토레이아웃이 적용되기 전의 크기(?)가 나오는거 같아요.

      해당 collectionView 자체에서 제가 원하는 방향으로 cell 크기를  잡아낼 방법이 있을까요..??

      ( 제가 아직 ios쪽 지식이 부족해서.. 문의드린 내용이 이해가 되실지 걱정이네요ㅜㅜ )

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580

      혹시 cell 사이의 간격을 조절해 보셨나요? 사이간격이 있어서 셀의 크기를 정확히 개수만큼 나누면 다음줄로 내려가버릴 수도 있어서요. 그것 먼저 확인해보면 좋을것 같네요.

    • 멍단비
      참가자
      • 글작성 : 10
      • 답글작성 : 98

      음 여기 명강의가 하나 있습니다. 여기서 4번 프로젝트 처음부터 한바퀴 쓱 해보시고 샘플을 하나 만들어보는 것이 어떠실지요.

      누적수강생이 10만명이 넘었다고 메일이 온 곳입니다. 목소리도 좋으세요. ㅎㅎ 링크

      • 이 답변은 멍단비에 의해 4 years 전에 수정됐습니다.
    • 석수
      참가자
      • 글작성 : 6
      • 답글작성 : 2

      답변 감사합니다~ 강의도 공부하면서 같이 보겠습니다~ ㅎㅎ

      제가 문의드린 내용의 원인은 현재까지 확인한 부분으로는 여러 커스텀뷰로 상위 뷰에서부터 addSubView로 코드로 생성해오면서

      중간의 subview(collectionView)의 frame을 지정해주지 않아서 커스텀뷰 만들때 대충잡아둔 xib에서 작성된 크기가 그대로 반영된거 같아요(?)

       

      • 야곰
        키 마스터
        • 글작성 : 37
        • 답글작성 : 580

        서로 모두 오토레이아웃 등으로 사이즈가 레이아웃 되어야 상호작용 하면서 사이즈와 위치가 정해질 수 있습니다.
        뷰의 위계 중 그 어느 곳이라도 오류가 있거나 애매한 부분이 있다면 오토레이아웃이 정상작동 할 수 없습니다.

    • lidium
      참가자
      • 글작성 : 9
      • 답글작성 : 8

      저도 CollectionView를 정말 좋아하고(…) 많이 사용하는데요!

      혹시 모를 나노 팁…

      스토리보드에서 뷰를 그릴 때 코드로 준 만큼 정확히 Layout이 나오지 않을때는,

      CollectionView의 Inspector창에서 Estimated Size를 None으로 두시면 반영이 잘 됩니다😊

      (Estimated Size : Automatic (default) > None)

      • 이 답변은 lidium에 의해 4 years 전에 수정됐습니다.
4 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom