需要初始化的,应该写在初始化方法init()里
网上很多说设置要写在prepare()里的,都是错误的说法
override init() {
super.init()
}
prepare()会重复调用,需要设置collectionView或者其他init时无法获取的数据才应该用prepare(),避免重复设置
override func prepare() {
super.prepare()
collectionView?.decelerationRate = .fast
}
//是否变化时重新布局
override func shouldInvalidateLayout(forBoundsChange newBounds: CGRect) -> Bool {
return true
}
//视图变化的数据
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
let array = super.layoutAttributesForElements(in: rect)
//这是要显示可见cell,不是所有的,如果要显示所有的,需要
//self.layoutAttributesForItem(at: indexPath) 便利获取
// array 里面元素是一个cell的所有相关数据UICollectionViewLayoutAttributes
//更改 元素的frame等来达到修改自定义cell布局的效果
//如果要特殊处理某个单独元素,layoutAttributesForItem(at indexPath: IndexPath) 然后在array中返回(不要重复添加已有的)
return array
}
override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint {
//手动滚动时候的偏移数据(抬手)
//可以设置滚动到某处时的处理,比如分页
return proposedContentOffset
}
网友评论