Swift: установить выравнивание по левому краю ячейки для UICollectionView по горизонтали - PullRequest
0 голосов
/ 07 ноября 2018

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

Screen

Здесь моя коллекция просмотра конфигурации:

var collectionView: UICollectionView = {
    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
    layout.itemSize = CGSize(width: 100, height: 40)
    layout.scrollDirection = .horizontal
    layout.minimumLineSpacing = 0

    let collectionView = UICollectionView(frame: CGRect.zero, collectionViewLayout: layout)
    collectionView.setCollectionViewLayout(layout, animated: true)
    collectionView.register(SportsCell.self, forCellWithReuseIdentifier: "MyCell")
    collectionView.translatesAutoresizingMaskIntoConstraints = false
    collectionView.backgroundColor = .white
    collectionView.showsHorizontalScrollIndicator = false

    return collectionView
}()

Тогда метод, чтобы сделать размер динамическим:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let text = items[indexPath.row].message
    let padding: CGFloat = 5

    return CGSize(width: textWidth(text: text, font: .systemFont(ofSize: 22)) + padding, height: 40)
}

func textWidth(text: String, font: UIFont?) -> CGFloat {
    let attributes = font != nil ? [NSAttributedString.Key.font: font!] : [:]
    return text.size(withAttributes: attributes).width
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...