我目前正在尝试动态计算In [24]: chunkit((3, 1, 4, 2, 2, 1, 1), 5)
Out[24]: ((3, 1), (4,), (2, 2, 1), (1,))
In [25]: chunkit((3, 1, 4, 2, 2, 1, ), 5)
Out[25]: ((3, 1), (4,), (2, 2, 1))
In [26]: chunkit((3, 1, 4, 2, 2, 1, 5), 5)
Out[26]: ((3, 1), (4,), (2, 2, 1), (5,))
In [27]: chunkit((3, 1, 4, 2, 2, 1, 5, 6), 5)
Out[27]: ((3, 1), (4,), (2, 2, 1), (5,), (6,))
In [28]: chunkit((3, 1, 4, 2, 2, 1, 5, 6, 1, 6), 5)
Out[28]: ((3, 1), (4,), (2, 2, 1), (5,), (6,), (1,), (6,))
的高度,但使用UICollectionViewCell
(动态属性)和单元格的当前高度。通过获取单元格内标签UILabel
的高度并将该值添加到单元格的原始高度来计算高度。出于某种原因,这总是在sizeThatFits
中返回0。我很确定问题是在创建单元格之前计算的大小因此总是会返回0.是否还有这个? (单元格的UI是在类本身内创建的,而不是在celllForItemAt中也可能是一个问题吗?)
sizeForItemAt
答案 0 :(得分:2)
NSAttributedString可以告诉你一个实例有多大,给定一个绑定。因此,假设您知道标签有多宽,并且您知道文本是什么以及它的属性是什么,您可以在不创建标签的情况下获得大小:
let width = CGFloat(200)
let attributedString = NSAttributedString(string: "Test", attributes: [NSFontAttributeName : UIFont(name: "Helvetica", size: 18)!])
let boundingRect = attributedString.boundingRect(with: CGSize(width: width, height: CGFloat.greatestFiniteMagnitude), options: [.usesLineFragmentOrigin, .usesFontLeading], context: nil)
答案 1 :(得分:-1)
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
{
let width = self.collectionView.frame.size.width
let Height = self.view.frame.size.height - 64 // 64 is a navigation bar height minus.
let cellSize:CGSize = CGSize(width: width, height: Height )
return cellSize
}