У меня есть collectionView, в котором ячейки выровнены по левому краю, а ширина ячейки основана на длине строки. Аналогично макету представления тегов.
Я просмотрел краткое руководство по анимации вставок: https://littlebitesofcocoa.com/306-customizing-collection-view-cell-insertion-animations
Ячейки предыдущего ряда расширяются и возвращаются в исходное положение.
Я попытался вставить ячейки без анимации, и то же самое происходит, и это связано с выравниванием по левому краю с переменной шириной ячейки.
Вот код для выравнивания моих ячеек по левому краю в пользовательском UICollectionViewFlowLayout:
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
let attributes = super.layoutAttributesForElements(in: rect)
var leftMargin = sectionInset.left
var maxY: CGFloat = -1.0
attributes?.forEach { layoutAttribute in
if layoutAttribute.frame.origin.y >= maxY {
leftMargin = sectionInset.left + 8
}
layoutAttribute.frame.origin.x = leftMargin
leftMargin += layoutAttribute.frame.width + minimumInteritemSpacing
maxY = max(layoutAttribute.frame.maxY , maxY)
}
return attributes
}
и анимация с помощью:
override func initialLayoutAttributesForAppearingItem(at itemIndexPath: IndexPath) -> UICollectionViewLayoutAttributes? {
let attributes = super.initialLayoutAttributesForAppearingItem(at: itemIndexPath)
if insertingIndexPaths.contains(itemIndexPath) {
attributes?.alpha = 0.0
attributes?.transform = CGAffineTransform(
translationX: 0,
y: 500
)
}
return attributes
}
Я ожидал, что это будет выглядеть так:
https://imgur.com/cbWq6CI
Но это выглядит так (фактическая запись):
https://imgur.com/xfKZYnr