【发布时间】:2019-03-26 14:43:42
【问题描述】:
我根据里面的文字动态设置UICollectionView的每个单元格的宽度。问题是大多数时候width 大小是正确的,但有时单元格大小不正确。
这些是我在单元格中显示的字符串
let tabs = ["1st tab", "Second Tab Second", "Third Tab", "4th Tab", "A"]
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let text = tabs[indexPath.row]
let font = UIFont.systemFont(ofSize: 21, weight: UIFont.Weight.regular)
let attributes = font != nil ? [NSAttributedString.Key.font: font] : [:]
let width = text.size(withAttributes: attributes).width
return CGSize(width: width + 16+16+16+35, height: self.menuBarColView.frame.height)
}
它正确显示了第一个、第二个、第三个和第五个,但第 4 个单元格的大小错误。这是输出。
请告诉我问题出在哪里?
【问题讨论】:
-
在返回实际大小之前将
estimatedItemSize设置为 (1, 1):(collectionView?.collectionViewLayout as? UICollectionViewFlowLayout)?.estimatedItemSize = CGSize(width: 1, height: 1) -
@MojtabaHosseini 非常感谢。它解决了我的问题。
-
我写了一个关于它的答案。看看这个。 ;)
标签: ios uicollectionview swift4 uicollectionviewcell