[트러블 슈팅] UICollectionView 상단에 여백 주기

2026. 3. 11. 12:32·내일배움캠프/Kickboard - Animality

⚠️ 문제: UICollectionView 상단에 여백 미존재

Sheet VC에 UICollectionView를 배치했는데 top 여백이 없이 배치되었습니다.

 

❗️ 원인: 잘못된 여백 설정

기존에는 아래와 같이 여백을 설정하고 있었습니다.

class SheetAnimalCollectionView: UICollectionView {
	private func setAttributes() {
    	directionalLayoutMargins = NSDirectionalEdgeInsets(top: 40, leading: 20, bottom: 0, trailing: 20) // 여백 설정
	}

	// 컬렉션뷰 레이아웃 설정
	private func makeCollectionViewLayout() -> UICollectionViewLayout {
    	let configuration = UICollectionViewCompositionalLayoutConfiguration()
    	configuration.contentInsetsReference = .layoutMargins // 여백
        
    	return UICollectionViewCompositionalLayout(sectionProvider: { ... }
	}
}

 

directionalLayoutMargin에 top, leading, trailing 여백을 부여하여

CompositionalLayoutConfiguration에서 해당 여백을 사용하였습니다.

 

그러나 directionalLayoutMargins는 양옆 여백(top, leading)만 유효하고 위아래 여백은 의미가 없다고 합니다.

 

✅ 해결: contentInset을 통한 여백 설정

contentInset을 통해 위 여백을 설정해주었습니다.

class SheetAnimalCollectionView: UICollectionView {
	private func setAttributes() {
    	directionalLayoutMargins = NSDirectionalEdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 20) // 양옆 여백 설정
        contentInset = .init(top: 40, left: 0, bottom: 0, right: 0) // 위 여백 설정
	}

	// 컬렉션뷰 레이아웃 설정
	private func makeCollectionViewLayout() -> UICollectionViewLayout {
    	let configuration = UICollectionViewCompositionalLayoutConfiguration()
    	configuration.contentInsetsReference = .layoutMargins // 여백
        
    	return UICollectionViewCompositionalLayout(sectionProvider: { ... }
	}
}

 

ContentInset은 컬렉션뷰 내부의 컨텐츠의 inset을 설정하는 것이므로

배치된 컬렉션뷰에서 컨텐츠가 어디에 표시될 것인지를 설정할 수 있습니다.

 

의도한대로 컬렉션뷰가 표시되는 것을 확인하였습니다.

'내일배움캠프 > Kickboard - Animality' 카테고리의 다른 글

[트러블 슈팅] 간헐적으로 바인딩 클로저가 실행되지 않는 현상  (0) 2026.03.12
[의사결정 기록] User 모델 저장 방식 논의  (0) 2026.03.11
[트러블 슈팅] UICollectionView Cell deque시 NSAttributedString 생성 불가 현상  (0) 2026.03.11
[트러블 슈팅] UIButton의 isHighlighted 미해제  (0) 2026.03.10
[의사결정 기록] API Key 은닉화 방법 선택하기  (0) 2026.03.10
'내일배움캠프/Kickboard - Animality' 카테고리의 다른 글
  • [트러블 슈팅] 간헐적으로 바인딩 클로저가 실행되지 않는 현상
  • [의사결정 기록] User 모델 저장 방식 논의
  • [트러블 슈팅] UICollectionView Cell deque시 NSAttributedString 생성 불가 현상
  • [트러블 슈팅] UIButton의 isHighlighted 미해제
devbambu
devbambu
devbambu 님의 블로그 입니다.
  • devbambu
    devbambu 님의 블로그
    devbambu
  • 전체
    오늘
    어제
    • devBambu (21)
      • WWDC (1)
      • Swift Github (1)
        • Algorithms (1)
      • 내일배움캠프 (19)
        • Kiosk - Gacha! (4)
        • 환율 계산기 - 개인 프로젝트 (6)
        • Kickboard - Animality (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
devbambu
[트러블 슈팅] UICollectionView 상단에 여백 주기
상단으로

티스토리툴바