Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
530 views
in Technique[技术] by (71.8m points)

Staggered Layout in UICollectionView (iOS 10 and above) - iOS Swift

StaggeredLayoutHi, This is my dataSource for UICollectionView

var dataSource = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"]

I am trying to do a staggered layout like shown in the pic below:

My numberOfRows are fixed as 3

Second Row should contain one element more than the first and third. count of dataSource will always be 3n+1.

I used a small hack and got this layout below:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    
        if indexPath.item == 1{
            return CGSize(width: 100, height: 100)
        }
       
        return CGSize(width: 180, height: 100)
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
         if section == dataSource.count - 1{
            return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
        } else{
            return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: -70)
        }
       
    }

What I have now

question from:https://stackoverflow.com/questions/65914344/staggered-layout-in-uicollectionview-ios-10-and-above-ios-swift

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...