Ограничение предпочитаемый LayoutAttributes width
Я работаю над пользовательским подклассом UICollectionViewLayout
с фиксированными колоннами и вертикально растущими предметами, похожими на Trello. Каждый элемент в основном представляет собой представление, которое содержит несколько вертикально расположенных меток.
В настоящее время я наблюдаю, что shouldInvalidateLayout(forPreferredLayoutAttributes:)
вызывается с вычисленным по размеру автоматического макета, но размер довольно fittingSize
,
Интересно, есть ли способ ограничить preferredLayoutAttributes
ширина, так как я установил столбцы ширины, и пусть он рассчитать высоту для меня?
override func shouldInvalidateLayout(forPreferredLayoutAttributes preferredAttributes: NSCollectionViewLayoutAttributes, withOriginalAttributes originalAttributes: NSCollectionViewLayoutAttributes) -> Bool {
if preferredAttributes.size != originalAttributes.size {
return true
}
return false
}
override func invalidationContext(forPreferredLayoutAttributes preferredAttributes: NSCollectionViewLayoutAttributes, withOriginalAttributes originalAttributes: NSCollectionViewLayoutAttributes) -> NSCollectionViewLayoutInvalidationContext {
let invalidationContext = super.invalidationContext(
forPreferredLayoutAttributes: preferredAttributes,
withOriginalAttributes: originalAttributes
) as! WeekViewInvalidationContext
// save computed attributes to apply them later during invalidateLayout
invalidationContext.updatedPreferredLayoutAttributes = preferredAttributes
return invalidationContext
}