Горизонтальная прокрутка UICollectionView с двумя строками и динамической шириной, ячейка не выровнена слева

#swift #uikit #uicollectionviewcell #collectionview

Вопрос:

У меня есть горизонтальный прокручиваемый вид коллекции, имеющий две строки с динамической шириной. Проблема в том, что ячейка не выровнена слева, она всегда остается в центре.

 class LeftAlignedCollectionViewFlowLayout: 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
        }

        layoutAttribute.frame.origin.x = leftMargin

        leftMargin  = layoutAttribute.frame.width   minimumInteritemSpacing
        maxY = max(layoutAttribute.frame.maxY, maxY)
    }

    return attributes
}
 

}

Я использую этот код для выравнивания, но если я использую этот пользовательский макет, горизонтальная прокрутка не работает, она работает как вертикальная прокрутка

используя этот код, есть скриншот, теперь он работает как вертикальный, но я хочу горизонтальный введите описание изображения здесь

если я установлю макет по горизонтали, вот вывод

 scrollingDirection = .horizontal
 

выравнивание ячеек с горизонтальной прокруткой

Вот код CollectionView:

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let text = userInterests[indexPath.item].title ?? ""
    let width = width(of: text)
    let widthWithPadding = width   CellFrame.textPadding
    return CGSize(width: widthWithPadding, height: CellFrame.height)
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { CellFrame.padding }

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { CellFrame.padding }
 

Я хочу добиться горизонтальной прокрутки Две строки Выравнивание ячейки по левому
краю.Проблема только с выравниванием ячейки по левому краю.
любой фрагмент кода или руководство будут оценены по достоинству.

Комментарии:

1. вы можете использовать два раздела с горизонтальной прокруткой

2. Если я использую два раздела, как будет решена проблема ?@ Ажартахир

3. на самом деле я имею в виду представление коллекции, встроенное в представление таблицы, где представление таблицы будет иметь две ячейки(строки), и каждая ячейка будет иметь представление коллекции с горизонтальной прокруткой, надеюсь, это решит вашу проблему

4. @AzharTahir, но они будут прокручиваться по отдельности, а не одновременно?, но все равно выдадим его, если у нас будет динамическая ширина, чем ячейка идет в центр, это проблема

5. вы можете использовать делегат прокрутки как для двух прокрутки