Ошибка отображения макета коллекции при выборе элемента (Swift 5) - PullRequest
1 голос
/ 25 января 2020

После выбора ячейки из viewDidLoad Макет меняется

До выбора ячейки

Before select cell

После выбора ячейки

let indexPath = IndexPath(row: SelectedFolderIndex, section: 0)       
collectionView.selectItem(at: indexPath, animated: false, scrollPosition: .centeredVertically)

After select cell

Макет

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: collectionView.frame.width/2.2, height: 55)
}

ViewDidLoad

let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 7, left: 12, bottom: 12, right: 12)
layout.minimumInteritemSpacing = 5
layout.minimumLineSpacing = 11
collectionView!.collectionViewLayout = layout
collectionView.delegate = self
collectionView.dataSource = self
collectionView.allowsMultipleSelection = false

Ответы [ 2 ]

1 голос
/ 28 января 2020

Вам нужно вырезать вставки и расстояние от ширины ячейки:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let width = (collectionView.frame.width/2.2) - 2*12 - 11
    return CGSize(width: width, height: 55)
}
0 голосов
/ 25 января 2020

Когда вы устанавливаете scrollPosition: .centeredVertically, вы устанавливаете, что после прокрутки все элементы будут расположены в центре и выровнены по вертикали, как вы можете видеть в вашем случае. Попробуйте посмотреть https://developer.apple.com/documentation/uikit/uicollectionview/1618057-selectitem, чтобы изменить поведение, которое вы хотите

...