Кадр не обновляется должным образом для UICollectionView как UITableViewCell Subview - PullRequest
0 голосов
/ 22 января 2020

Я ставлю UICollectionView на заказ UITableView. Фрейм UICollectionView установлен в contentView границы, но он не принимает его полностью.

CellForRowAtIndexPath

if indexPath.row == 0 {
    let cell = tableView.dequeueReusableCell(withIdentifier: "collectionViewCell") as! TravelTypeTableViewCell
    cell.backgroundColor = .green
    return cell
} else {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell")!
    cell.textLabel?.text = "adsf"
    return cell
}

TableViewCell

override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)

    let layout = UICollectionViewFlowLayout()
    collectionView = UICollectionView(frame: self.contentView.bounds, collectionViewLayout: layout)
    collectionView.delegate = self
    collectionView.dataSource = self
    collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell")
    collectionView.backgroundColor = .clear
    self.addSubview(collectionView)

    collectionView.leftAnchor.constraint(equalTo: self.contentView.leftAnchor, constant:0).isActive = true
    collectionView.rightAnchor.constraint(equalTo: self.contentView.rightAnchor, constant:0).isActive = true
    collectionView.topAnchor.constraint(equalTo: self.contentView.topAnchor, constant:0).isActive = true
    collectionView.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor, constant:0).isActive = true
}

Выходной пользовательский интерфейс

enter image description here

1 Ответ

2 голосов
/ 22 января 2020

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

override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)

    let layout = UICollectionViewFlowLayout()
    let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) // no need to give frame as you are adding constraints
    collectionView.delegate = self
    collectionView.dataSource = self
    collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell")
    collectionView.backgroundColor = .clear
    self.contentView.addSubview(collectionView)


    collectionView.leftAnchor.constraint(equalTo: self.contentView.leftAnchor, constant:0).isActive = true
    collectionView.rightAnchor.constraint(equalTo: self.contentView.rightAnchor, constant:0).isActive = true
    collectionView.topAnchor.constraint(equalTo: self.contentView.topAnchor, constant:0).isActive = true
    collectionView.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor, constant:0).isActive = true

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