主要步骤:添加一个class继承UICollectionViewFlowLayout
- 添加一个数组属性,用来存放每个item的局部信息(item.frame)
- 重写prepare方法,设置每个item的frame,并存入数组
- 重写layoutAttributesForElements方法,并将存放item.frame信息的数组返回
import UIKit
import Foundation
class CircleLayout: UICollectionViewFlowLayout {
var itemCount: Int
// 添加一个数组属性,用来存放每个item的布局信息
var attributeArray: Array<UICollectionViewLayoutAttributes>?
required init?(coder aDecoder: NSCoder) {
itemCount = 0
super.init(coder:aDecoder)
}
override init() {
self.itemCount = 0
super.init()
}
override func prepare() {
//调用父类的准备方法
super.prepare()
//设置为竖直布局
self.scrollDirection = .vertical
//初始化数组
attributeArray = Array<UICollectionViewLayoutAttributes>()
self.itemCount = (self.collectionView?.numberOfItems(inSection: 0))!
//计算大圆半径
let radius: CGFloat = min((self.collectionView?.frame