SHcommit / LearnMoreSwiftInUdemy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Clone/Instagram] FeedCell 초기 UI 구현 | 복습 & 새롭게 알게된 개념 #2

SHcommit opened this issue · comments

FeedCell 초기 UI구현

cell의 디자인을 보고 강의 보기 전에 혼자 구현해봤다. 강의에선 오토레이아웃을 사용하기 편하게 UIView를 Extension했다. 하지만 AutoLayout 복습도 할겸 그냥 anchor로 AutoLayout을 구현했다.

까다로웠던 점

tableView와 달리 collectionView는 cell의 width의 길이에 따라 많은 cell이 한 line에 올 수도 단 한개의 cell이 한 라인을 차지할 수 있음을 알게 되었다. width는 view의 width로 하면 되는데 height가 문제였다. collectionView(: cellForItemAt:) DataSource 메서드가 실행되기 이전에 collectionView(:layout:sizeForItemAt:)가 실행되어서 height를 지정하기 애매했다. 다이나믹한 cell의 height 설정 방법을 고민하고 있다.

복습한 개념

  • UIImageView contentMode

ScaleToFill : UIImageView크기와 같게 이미지 size 늘어남

ScaleAspectFit : 이미지 원본 비율 유지하며 UIImageView의 size에 맞게 이미지를 확장

ScaleAspectFill : 비율 유지하면서 view의 size에 맞게 이미지 채운다.

  • ContentCompressionResistance

cell의 크기는 정해져있고 vertical로 5개정도의 subView를 추가했다. imageView의 크기가 상당히 클수 있기에 그 아래에 존재하는 subView들은 가려지게 되었다. 그래서 contentCompressionResistance 우선순위를 줄여 이미지 뷰 아래에 존재하는 subView들의 각자 intrinsic size는 챙기고 imageView의 height를 감소하도록 했당..

새롭게 알게된 개념

  • ClipsToBounds

View의 bounds에 의해 subview들이 clip(잘리다)될 수 있는지 의미

  • UIView의 frame과 bounds 차이

frame.origin은 superView에 의해 결정되고 bounds.origin은 순수 View자체에 기준을 갖는다.

frame.size는 View가 차지하는 영역을 사각형으로 감싼 값이 들어간다. ( 유동적으로 바뀐다.)

bounds.size는 View자체 순수 size다.