Как я могу получить UICollectionView для непрерывной горизонтальной прокрутки вместо создания второй строки? - PullRequest
0 голосов
/ 24 марта 2020

Как правильно настроить ширину UICollectionView для соответствия количеству ячеек * их ширины, чтобы предотвратить создание UICollectionView второй строки в моем горизонтальном представлении коллекции.

Есть ли Определить c метод для реализации CollectionView, который позволяет мне установить это?

В настоящее время выглядит так:

2 Rows, only 1 wanted with full height

В настоящее время, Я реализую следующие методы:

func numberOfSections(in collectionView: UICollectionView)

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int)

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewDelegateFlowLayout, sizeForItemAt indexPath: IndexPath)

Ответы [ 2 ]

1 голос
/ 24 марта 2020

сначала установите свой collectionView FlowLayout scrollDirection в горизонтальное положение.

let myColl:UICollectionView = {
    let layout = UICollectionViewFlowLayout()
    layout.scrollDirection = .horizontal
    let coll = UICollectionView(frame: .zero, collectionViewLayout: layout)
    return coll
}()

, а затем установите ограничение высоты просмотра коллекций равным (или чуть-чуть более) высоте ячейки

myColl.heightAnchor.constraint(equalToConstant: 50).isActive = true

установите свою ячейку размер здесь

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

Result

0 голосов
/ 24 марта 2020

Для всех, кому интересно, ответ Дилана также работает с UICollectionView, которые были созданы и связаны с использованием раскадровок.

Просто сделайте то, что Дилан предложил в вашей функции viewDidLoad ().

override func viewDidLoad() { myColl.heightAnchor.constraint(equalToConstant: 50).isActive = true }

Убедитесь, что ваш класс (если уже не UICollectionViewController) подклассы UICollectionViewFlowDelegate.

class MyClass: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {}

Если этого не сделать,

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

не будет называется.

...