Изменение размера ячеек CollectionView из внутреннего AutoLayout - PullRequest
0 голосов
/ 27 марта 2020

Я добавляю тень в ячейку, однако, когда я начинаю использовать авторазметку для установки объектов внутри ячейки, это отрицательно влияет на форму ячейки. Я пробовал разные этапы загрузки представлений / пера, но не могу понять, как правильно выбрать комбо. Что я могу сделать, чтобы разрешить использование автоматического выделения в ячейке?

Желаемый (без автоматического выделения):

enter image description here

Результат (после настройки метка для «равной ширины» и расстояния снизу):

enter image description here

Из контроллера представления:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
      let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PlacesCell", for: indexPath) as! PlacesCollectionViewCell

    let shadowPath2 = UIBezierPath(rect: cell.bounds)
    cell.layer.cornerRadius = 10
    cell.layer.masksToBounds = false
    cell.layer.shadowColor = UIColor.black.cgColor
    cell.layer.shadowOffset = CGSize(width: CGFloat(2.0), height: CGFloat(6.0))
    cell.layer.shadowOpacity = 0.3
    cell.layer.shadowPath = shadowPath2.cgPath

    cell.name.text = someObjects[indexPath.row].name

    return cell
}

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

    let noOfCellsInRow = 2
    let flowLayout = collectionViewLayout as! UICollectionViewFlowLayout
    let totalSpace = flowLayout.sectionInset.left
        + flowLayout.sectionInset.right
        + (flowLayout.minimumInteritemSpacing * CGFloat(noOfCellsInRow - 1))
    let size = Int((collectionView.bounds.width - totalSpace) / CGFloat(noOfCellsInRow))
    return CGSize(width: size, height: size)
}

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

     if let cell = sender as? UICollectionViewCell,
        let indexPath = self.placesCollectionView.indexPath(for: cell) {
        let vc = segue.destination as! PeopleViewController
        vc.placeForReference = someObjects[indexPath.row] //Pass object
    }
}

Класс ячейки наследуется только от UICollectionViewCell.

1 Ответ

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

разобрался; в настройках просмотра коллекции мне нужно было изменить «Предполагаемый размер» на «Нет».

enter image description here

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