2017-04-21 3 views
0

컬렉션보기를 사용하여 이미지에 표시된 레이아웃을 어떻게 얻을 수 있습니까? 컬렉션보기에서 다른 행에 대해 다른 수의 열을 얻는 방법

enter image description here

나는 아래 링크에서 폭포 흐름 레이아웃을 사용하지만, 성공을받지하여 달성하기 위해 노력하고 있습니다. https://github.com/chiahsien/CHTCollectionViewWaterfallLayout

아래 코드는 내가 시도한 코드입니다.

override func viewDidLoad() { 
    super.viewDidLoad() 
    let identifier = String(describing: collectionCell.self) 
    collectionView.register("collectionCell", forCellWithReuseIdentifier: "collectionCell") 
    collectionView.register(UINib(nibName: "collectionCell", bundle: nil), forCellWithReuseIdentifier: identifier) 
    let layout = CHTCollectionViewWaterfallLayout() 
    layout.sectionInset = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10) 
    layout.minimumInteritemSpacing = 0 
    layout.minimumColumnSpacing = 10 
    collectionView.collectionViewLayout = layout 
} 

// 셀

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize { 

    let width = Double((self.collectionView.bounds.size.width-(4*minimumSpaceBetweenCells))/3) 

    if indexPath.row == 0 { 
     return CGSize(width:width * 2, height: width * 2) 
    } 
    else 
    { 
     return CGSize(width:width, height: width) 
    } 

} 

의 크기를 설정하지만 그것은 단지 모든 행에 대해 동일한 크기의 2 열를 표시하십시오.

아무도 모르는 사람이 있으면 알려 주시기 바랍니다.

미리 감사드립니다.

+0

레이아웃을 코딩해야한다고 생각합니다. 인터넷에서 찾아 볼 수있는 대부분의 자습서에서 동일한 항목 높이 또는 너비와 가변 폭 또는 높이를 각각 볼 수 있습니다. 귀하의 경우 높이와 너비가 다른 2 가지 유형의 품목이 있습니다. 당신은 그 품목을 너 자신 배치해야한다. –

+2

http://stackoverflow.com/questions/43186246/uicollectionview-layout-like-snapchat/43409440#43409440? 프레임을 직접 계산하면됩니다. – Larme

+0

고마워요 @ 라임 제공 한 링크에서 신속한 버전을 만들었습니다. –

답변

0

각 collectionViewCell 안에 새로운 tableView를 만들고 원하는 열의 수에 맞게 tableView의 numberOfRows를 설정하는 것이 좋습니다.

관련 문제