我根据其中的文本动态设置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)
}
它正确显示了第一,第二,第三和第五个,但是第四个单元格的大小错误。这是输出。
请告诉我问题出在哪里?
答案 0 :(得分:1)
Selfsize集合视图单元格清单:
estimated item size
设置为.zero
以外的任何值。如果将其设置为(1,1),则效果最佳示例:
(collectionView?.collectionViewLayout as? UICollectionViewFlowLayout)?.estimatedItemSize = CGSize(width: 1, height: 1)
答案 1 :(得分:0)
我看不到我的VPN的图片原因,并且看到您已解决问题,但是,我想添加一些内容。如果您的单元格使用自动布局,并且有约束条件,则也需要计算和更改它们。