Я занимаюсь разработкой приложения, которое содержит UICollectionView внутри UITableViewCell.
Но что происходит, так это то, что автоматическая ширина ячейки представления коллекции не работает правильно при перезагрузке данных.
Вот скриншот.
Вот код.
@IBOutlet weak var cv_inside: UICollectionView!
...
cv_inside.collectionViewLayout = AlignedCollectionViewFlowLayout(horizontalAlignment: .left, verticalAlignment: .top)
if let flowlayout = cv_inside.collectionViewLayout as? UICollectionViewFlowLayout {
flowlayout.estimatedItemSize = CGSize(width: 1, height: 25)
flowlayout.minimumLineSpacing = 10
}
cv_inside.isScrollEnabled = false
cv_inside.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.new, context: nil)
....
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
cv_inside.layer.removeAllAnimations()
heightOfCollectionViewConstant.constant = cv_inside.collectionViewLayout.collectionViewContentSize.height
UIView.animate(withDuration: 0.5) {
self.updateConstraints()
self.layoutIfNeeded()
}
}
До iOS 12 все работало нормально, и я выяснил, что мне нужно добавить этот код.
contentView.translatesAutoresizingMaskIntoConstraints = false
let leftConstraint = contentView.leftAnchor.constraint(equalTo: leftAnchor)
let rightConstraint = contentView.rightAnchor.constraint(equalTo: rightAnchor)
let topConstraint = contentView.topAnchor.constraint(equalTo: topAnchor)
let bottomConstraint = contentView.bottomAnchor.constraint(equalTo: bottomAnchor)
NSLayoutConstraint.activate([leftConstraint, rightConstraint, topConstraint, bottomConstraint])
Но даже если я добавил этот код, он не работает.
Кто-нибудь может мне помочь, пожалуйста!
Спасибо.