Ограничение предпочитаемый 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
}

0 ответов

Другие вопросы по тегам