1. UICollectionView 구조
1) UICollectionView
- 테이블뷰 처럼 Cell을 재활용하여 Layout의 규칙에 맞게 Cell을 배치한다
2) UICollectionReusableView
- 콜렉션뷰에서 사용되는 뷰의 슈퍼 클래스, Header, Footer, Cell등의 상위클래스이다
3) UICollectionViewCell
- 콜렉션뷰에서 사용되는 Cell의 객체, 테이블뷰의 Cell의 단점을 보완하며 구조가 많이 간단해짐
3) UICollectionViewLayoutAttributes
- Cell의 뷰의 정보를 정의한 모델 클래스, Cell의 크기, 위치, 중간값, 변형, 알파값 등의 정보를 가지고 있고 이 정보를 바탕으로 Cell이 반영된다
4) UICollectionViewLayout
- Cell의 위치에 대한 정보를 가지고 있는 클래스
2. UICollectionViewLayout
1) UICollectionViewFlowLayout
- UICollectionViewLayout을 상속 받은 클래스, Cell의 배치 방향을 Vertical, Horizontal등으로 상하, 좌우로 배치 시킬 수 있다
- UICollectionViewFlowLayout에서는 아이템에 대한 Size, 헤더 풋터에 대한 Size, inset 값을 정의하여 여백을 시작할 때 조정할 수 있다
- 또한 델리게이트 방식을 통하여 indexPath 값 마다 델리게이트를 호출하여 각 IndexPath에 대한 값을 정의 할 수 있다
2) CustomLayout
- Layout을 정의 할 때는 다음과 같은 메소드가 호출 된다
- (void)prepareLayout;
- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
a. prepareLayout을 통해서 배치가 시작되기 전 기본적인 attributes의 값을 정의한다
- 전체 크기가 적은 양의 Cell을 배치하거나 위치가 고정일 경우 모든 Cell의 Attributes을 미리 생성하여 한다.
b. layoutAttributesForItemAtIndexPath를 통하여 각 indexPath에 대한 attributes를 반환한다
- 만약 동적으로 Cell에 대해 추가, 삭제가 일어나거나 많은 양의 Cell을 배치할 경우에는 이 메소드에서 위치를 계산하여 attributes를 반한환다
c. CollectionView 내 화면에 표현되고 있는 범위를 입력 받아 attributes의 배열을 반환한다.
- custom Layout일 경우 이 때 layoutAttributeForItemAtIndexPath메소드를 사용하여 배열로 생성하는 작업을 진행 한다.
2) Change Layout
3) Layout Animation
4) Layout Event Handle
'iOS' 카테고리의 다른 글
CollectionView 헤더 테이블뷰의 헤더 처럼 항상 노출되는 방법 (0) | 2014.03.13 |
---|---|
UICollectionView setCollectionViewLayout Crash (0) | 2014.03.13 |
MPMoviePlayerController를 사용하여 화면 off (Background) 상태에서도 음악 재생하기 (0) | 2013.06.07 |
MPMoviePlayerController에서 풀스크린으로 사용하기 (0) | 2013.06.04 |
UIWebView에서 alert, confirm 자바스크립트 처리하기 (0) | 2013.03.25 |