ios는 가로 스크롤 테이블 뷰를 기본으로 제공해주지 않는다.
코코아포드에 라이브러리가 있긴 한데 아직까진 쓰기도 불편하고 커스텀을 마음대로 할수가 없어서 나는 UICollectionView 에 UICollectionViewFlowLayout을 달아서 쓴다.
그런데 가끔 UICollectionViewCell이 안 보이는 경우가 생긴다.
collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
이 메소드 자체가 호출이 안될때가 있는데 이는 UICollectionView크기가 Cell 크기보다 작을 경우다.
하지만 이걸 소스나 인터페이스 빌더를 보면서 찾기가 매우 힘들어서 크게 확인해야 할것 두가지를 정리해 보려 한다.
1. collectionViewFlowLayout.scrollDirection = UICollectionViewScrollDirection.Horizontal 이 안먹어요!
이 경우는 대부분 스크롤뷰 인셋 문제다.
스토리보드에 보면 ViewController -> Layout -> Adjust Scroll View Insets이 있는데 이는 스크롤뷰가 StatusBar 혹은 NavigationBar 와 겹칠 경우 자동으로 위에 공간을 벌리는 옵션이다.
이 옵션이 활성화가 되어있으면 CollectionView는 자동으로 위에 공간을 띄워 세로 스크롤이 생기며 그 공간때문에 Cell을 표시할 자리가 없어지고
collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
의 호출을 막는다.
만약 collectionViewFlowLayout.scrollDirection = UICollectionViewScrollDirection.Vertical을 설정하고 스크롤 했는데 Cell이 보인다면 무조건 이문제.
해결방법은 Adjust Scroll View Insets을 비활성화 시키면 된다.
해결이 안된다면 해당 ViewController가 TabbarController나 NavigationController에 포함이 되어있는지 확인하고, 해당 TabbarController나 NavigationController에서도 Adjust Scroll View Insets을 비활성화 시키면 된다.
인코드로 하려면 self.automaticallyAdjustsScrollViewInsets = false
2. 그래도 안보여요!
그렇다면 Cell 크기가 CollectionView보다 크게 잡혀있는 부분이 없는지 확인해보자.
CollectionView의 초기 셀크기 설정값은 50*50 이다.
아이템 사이즈는 collectionViewFlowLayout.itemSize 이나
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
을 통해서 설정할 수 있다.
'iOS' 카테고리의 다른 글
core data delete rule 정리 (0) | 2015.11.04 |
---|---|
키보드 이벤트 대응 입력창 만들기. (0) | 2015.07.23 |
[링크] ios 에서 circle imageview 및 rounded imageview 만들기 (0) | 2015.06.10 |
[링크] ios 이미지 캐시 라이브러리 밴치마크 (0) | 2015.06.09 |