#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. вы можете использовать делегат прокрутки как для двух прокрутки