UICollectionView BackgroundView Проблема - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь добавить пользовательский интерактивный вид за UICollectionView (представлен желтым фоном на картинке).Я нашел самый простой способ сделать это, используя свойство backgroundView в моем UICollectionView.Единственная проблема заключается в том, что если я добавлю интервал между ячейками, фоновый вид будет виден между пробелами.Чтобы бороться с этим, я сделал интервал между ячейками 0 и имитировал черные линии сетки, добавляя поле вокруг UIImageView s в ячейках (представленное фиолетовыми квадратами), а затем делая фон ячеек черным.Это прекрасно работает для горизонтального расстояния выше и ниже ячеек, но по какой-то причине фоновый вид все еще виден через узкую вертикальную линию между ними.Я убедился, что ширина ячеек ровно вдвое меньше ширины UICollectionView, и что minimumLineSpacing и minimumInteritemSpacing равны 0,0.

enter image description here

1 Ответ

0 голосов
/ 13 мая 2019

Я создал тот же сценарий, что и ваш.И он работает нормально для меня с приведенным ниже кодом.

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
    @IBOutlet weak var collectionView: UICollectionView!

    override func viewDidLoad() {
        super.viewDidLoad()
        let backView = UIView(frame: self.collectionView.bounds)
        backView.backgroundColor = UIColor(red: 0.9372549057, green: 0.3490196168, blue: 0.1921568662, alpha: 1)
        self.collectionView.backgroundView = backView
    }

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

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
        cell.backgroundColor = UIColor(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)
        cell.layer.borderWidth = 5.0
        return cell
    }

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

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
        return UIEdgeInsets(top: 100, left: 0, bottom: 100, right: 0)
    }
}

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

enter image description here

...