UICollectionView Пейджинговое представление отключено - пейджинг не работает - PullRequest
0 голосов
/ 06 декабря 2018

Я реализую UICollectionView, который должен листать горизонтально.UICollectionViewCell должен быть того же размера, что и UICollectionView.Ячейка имеет 2 встроенных ряда.Первый имеет UITextView и UIButton, а второй имеет UITextView.

UICollectionviewCell и ограничения работают в режиме предварительного просмотра для различных размеров iPhone (например, 4s, 8, 8plus), но при работе в симуляторе подкачка страниц работает некорректно, и ширина ячейки, я думаю, не равнаt по центру, и ячейка не перемещается достаточно далеко, чтобы достичь следующей ячейки, в результате чего ячейка выглядит обрезанной.

Я пробовал решение по этому адресу: UICollectionView Горизонтальный пейджинг не центрирован

но я не могу правильно определить ширину и центрирование.Код, который я использую, приведен ниже.

internal class AccessViewController : UIViewController,    UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {

//...

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

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! PagerContentCollectionViewCell

    //Set the cell title
    cell.txtTitle.text = "title"

    //add a target for the call capability
    cell.btnCall.addTarget(self, action: #selector(didButtonClick), for: .touchUpInside)

    //description
    cell.txtDescription.text =  "description"

    return cell
} 


func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    //let i = IndexPath(item: titles.count, section: 0)
    collectionView.scrollToItem(at: indexPath, at: .right, animated: true)
    print("Selected")
    collectionView.reloadData()
}


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

    return 0
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let frameSize = collectionView.frame.size
    return CGSize(width: frameSize.width, height: frameSize.height)
}


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    let frameSize = collectionView.frame.size
    return CGSize(width: frameSize.width, height: frameSize.height)
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {

     return UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5)
}

Ширина и высота UICollectionView составляют 267, 153. Ширина и высота UICollectioViewCell 262, 150 Вставки разделов - 0,0,0,0.

Любая помощь очень ценится.

Спасибо

Редактировать: я добавил в код, который я пытался использовать для макета.Я, наверное, тоже что-то упускаю.

1 Ответ

0 голосов
/ 07 декабря 2018

Мне удалось исправить с помощью этих двух функций:

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

    return 0
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let frameSize = collectionView.frame.size
    return CGSize(width: frameSize.width, height: frameSize.height)
}
...