UICollectionView показывает вертикально, даже если направление прокрутки установлено на горизонтальное? - PullRequest
0 голосов
/ 27 августа 2018

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

    let nib = UINib(nibName: cellIdentifier, bundle: nil)
    collectionView.register(nib, forCellWithReuseIdentifier: cellIdentifier)
    collectionView.collectionViewLayout = layout(withParentView: view)

    self.collectionView.delegate = self
    self.collectionView.dataSource = self

Метод Flow Layout

// #PRAGMA mark - UICollectionViewFlowLayout()

func layout(withParentView parentView: UIView) -> UICollectionViewFlowLayout {
    let layout = UICollectionViewFlowLayout()
    layout.itemSize = CGSize(width: 160, height: 65)
    layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    layout.minimumLineSpacing = 0
    layout.minimumInteritemSpacing = 0
    layout.scrollDirection = .horizontal
    return layout
}

и вот методы делегата и dataSource

func numberOfSections(in collectionView: UICollectionView) -> Int {
    return 1
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 2
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellIdentifier, for: indexPath) as! RowCollectionViewCell

    if indexPath.row % 2 == 0 {
        cell.backgroundColor = UIColor(red: 248/255, green: 248/255, blue: 248/255, alpha: 1)
    }else {
        cell.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1)
    }

    cell.label.text = "Field\(indexPath.row)"

    return cell
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
    return CGSize(width: 160, height: 65)
}

Когда я запускаю, он показывает это (Вертикальный список элементов).Есть ли что-то, что я пропустил.Любая помощь будет оценена.

enter image description here

1 Ответ

0 голосов
/ 27 августа 2018

Я думаю, вы не поняли, как работает UICollectionViewFlowLayout.

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

Это легко проверить, изменив число ячеек на большее.(например, 10?)


Я рекомендую вам посмотреть это видео , чтобы лучше понять, как работает UICollectionView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...