gpt4 book ai didi

ios - 带有 AutoLayout 的 UICollectionViewCell 在 iOS 10 中不起作用

转载 作者:可可西里 更新时间:2023-10-31 23:35:48 25 4
gpt4 key购买 nike

我正在尝试创建一个动态的 UICollectionView,其单元格会根据其中的文本自动调整大小。但由于某些原因,我的自定义 UICollectionViewCell 不会扩展到全宽。我正在使用 SnapKit作为 AutoLayout,我所有的 View 都是基于代码的;没有 xib 或 Storyboard。这是我目前得到的调试 View :

enter image description here

我希望单元格扩展整个宽度和高度以适应任何内容。这是我的 UICollectionViewController

上的一个片段
override func viewDidLoad() {
super.viewDidLoad()

self.title = "Home"

let layout = UICollectionViewFlowLayout()
layout.itemSize = CGSize(width: view.frame.width, height: view.frame.height)
layout.scrollDirection = .vertical
layout.estimatedItemSize = CGSize(width: 375, height: 250)

collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height), collectionViewLayout: layout)
collectionView.dataSource = self
collectionView.delegate = self
collectionView.backgroundColor = UIColor(red: 245/255, green: 245/255, blue: 245/255, alpha: 1)
collectionView.register(HomeCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)


self.view.addSubview(collectionView)

}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath)

// Configure the cell
if let c = cell as? HomeCollectionViewCell {
c.contentView.frame = c.bounds
c.contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
configureCell(c, indexPath: indexPath)

}

return cell
}

func configureCell(_ cell: HomeCollectionViewCell, indexPath: IndexPath) {
cell.setText(withTitle: items[(indexPath as NSIndexPath).section].title)
}

这是我的自定义 UICollectionViewCell

的片段
override init(frame: CGRect) {
super.init(frame: frame)

self.contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
self.contentView.translatesAutoresizingMaskIntoConstraints = true
self.contentView.bounds = CGRect(x: 0, y: 0, width: 99999, height: 99999)

createTitle()

}

private func createTitle() {
titleView = TTTAttributedLabel(frame: CGRect(x: 0, y: 0, width: contentView.frame.width, height: 56))
titleView.tag = 1
titleView.numberOfLines = 2
titleView.delegate = self
titleView.translatesAutoresizingMaskIntoConstraints = false

contentView.addSubview(titleView)

titleView.snp_updateConstraints(closure: {
make in

make.leading.trailing.equalTo(contentView).offset(10)
make.top.equalTo(contentView).offset(10)
make.bottom.equalTo(contentView).offset(-10)

})
}

func setText(withTitle title:String, paragraph: String, image: String) {
let titleAttributed = AttributedString(string: title, attributes: titleStringAttr)

titleView.attributedText = titleAttributed
titleView.sizeToFit()
}

我已经花了 3 天的时间不停地研究这个问题。感谢任何建议!

最佳答案

嗯,这并不是真正的解决方案,但 TTTAtributedLabel 做了一些黑魔法,导致 AutoLayout 无法工作。所以对我来说,我将 TTTAtributedLabel 更改为 UILabel,它工作正常。

仅供引用,我在 SnapKit Github 问题上发布了类似的问题;将提示归功于 robertjpayne ( https://github.com/SnapKit/SnapKit/issues/261 )

关于ios - 带有 AutoLayout 的 UICollectionViewCell 在 iOS 10 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38595602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com