Ios 有没有更好的方法可以在不继承的情况下获取UICollectionViewFlowLayout属性
我有Ios 有没有更好的方法可以在不继承的情况下获取UICollectionViewFlowLayout属性,ios,swift,uicollectionview,uicollectionviewlayout,Ios,Swift,Uicollectionview,Uicollectionviewlayout,我有 class MyCollectionViewLayoutA: UICollectionViewFlowLayout class MyCollectionViewLayoutB: UICollectionViewFlowLayout 因此,我想在UICollectionViewFlowLayout中添加一个函数,以获取其原始布局属性 我知道它可以通过UICollectionViewFlowLayout的子类来完成,但是有更好的方法吗 我尝试使用扩展名来实现它,但是super.layoutt
class MyCollectionViewLayoutA: UICollectionViewFlowLayout
class MyCollectionViewLayoutB: UICollectionViewFlowLayout
因此,我想在UICollectionViewFlowLayout
中添加一个函数,以获取其原始布局属性
我知道它可以通过UICollectionViewFlowLayout
的子类来完成,但是有更好的方法吗
我尝试使用扩展名来实现它,但是super.layouttributesforItem(at:indexPath)
将返回nil
,而self.layouttributesforItem(at:indexPath)
将调用其子类实现
我还尝试创建一个带有扩展名的协议,使其具有默认实现,但self.layouttributesforitem(at:indexPath)
也将调用其子类实现,并且super不能在类成员之外使用
这是我的密码:
extension UICollectionViewFlowLayout {
func originalLayoutAttributes() -> [Int: [UICollectionViewLayoutAttributes]]? {
guard let collectionView = self.collectionView else { return nil }
let numberOfSections = collectionView.numberOfSections
if numberOfSections <= 0 {
return nil
}
var sectionItemAttributes = [Int: [UICollectionViewLayoutAttributes]]()
for section in 0 ..< numberOfSections {
var attributesArray = [UICollectionViewLayoutAttributes]()
for index in 0 ..< collectionView.numberOfItems(inSection: section) {
let indexPath = IndexPath(item: index, section: section)
var itemAttributes: UICollectionViewLayoutAttributes?
itemAttributes = super.layoutAttributesForItem(at: indexPath)
//itemAttributes = self.layoutAttributesForItem(at: indexPath)
attributesArray.append(itemAttributes)
}
sectionItemAttributes[section] = attributesArray.isEmpty ? nil : attributesArray
}
return sectionItemAttributes.isEmpty ? nil : sectionItemAttributes
}
}
扩展UICollectionViewFlowLayout{
func originalLayoutAttributes()->[Int:[UICollectionViewLayoutAttributes]]{
guard let collectionView=self.collectionView else{return nil}
设numberOfSections=collectionView.numberOfSections
如果numberOfSections你有它吗?为什么不改为尺寸呢?@dengApro没有,它还没有解决,你说的“尺寸”是什么意思?我想做一个定制的布局,UICollectionViewLayoutAttribute是必需的。你有它吗?为什么不改为尺寸呢?@dengApro没有,它还没有解决,你说的“尺寸”是什么意思?我想制作一个定制的布局,
UICollectionViewLayoutAttribute
是必需的。