The problem
I use UICollectionView with custom layout in my app. I wanted to migrate to MagazineLayout. But I use custom UICollectionViewLayoutAttributes, so I need to somehow extend MagazineLayoutCollectionViewLayoutAttributes to use with my cells.
But since MagazineLayoutCollectionViewLayoutAttributes is final - I can't just subclass it.
The solution I'd like
Make it non-final
Alternatives I've considered
a) Make MagazineLayout non-final, and let subclasses provide type of UICollectionViewLayoutAttributes which conforms to protocol:
protocol IMagazineLayoutCollectionViewLayoutAttributes {
public var shouldVerticallySelfSize: Bool { get set}
}
Make MagazineLayoutCollectionViewLayoutAttributes conform this protocol :
extension MagazineLayoutCollectionViewLayoutAttributes: IMagazineLayoutCollectionViewLayoutAttributes {}
b) Use objc runtime to extend MagazineLayoutCollectionViewLayoutAttributes
c) Add property into MagazineLayoutCollectionViewLayoutAttributes (some key-value collection), to hold additional parameters
The problem
I use
UICollectionViewwith custom layout in my app. I wanted to migrate toMagazineLayout. But I use customUICollectionViewLayoutAttributes, so I need to somehow extendMagazineLayoutCollectionViewLayoutAttributesto use with my cells.But since
MagazineLayoutCollectionViewLayoutAttributesis final - I can't just subclass it.The solution I'd like
Make it non-final
Alternatives I've considered
a) Make
MagazineLayoutnon-final, and let subclasses provide type ofUICollectionViewLayoutAttributeswhich conforms to protocol:Make MagazineLayoutCollectionViewLayoutAttributes conform this protocol :
b) Use objc runtime to extend
MagazineLayoutCollectionViewLayoutAttributesc) Add property into
MagazineLayoutCollectionViewLayoutAttributes(some key-value collection), to hold additional parameters