iOS Swift - CGSizeFromString 抛出 CGSizeZero

iOS Swift - CGSizeFromString throws CGSizeZero

我有这个函数,用于根据字符串长度设置大小。 类似的东西 - .

categoriesItems 中的第一项是 "Age"

func collectionView(collectionView: UICollectionView,
    layout collectionViewLayout: UICollectionViewLayout,
    sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

        var cellWidth : CGSize = CGSizeFromString(self.categoriesItems[indexPath.row].name);

        return cellWidth
}

要确定文本的宽度,请使用以下代码

let text = self.categoriesItems[indexPath.row].name
let rect = text.boundingRectWithSize(constraintSize, options: NSStringDrawingOptions.UsesFontLeading, attributes: [NSFontAttributeName : UIFont.systemFontOfSize(17)], context: nil)
return rect.size.width

其中 constraintSize 是您希望限制文本的任意大小

您可以使用 NSStringsizeWithAttributes 函数来执行此操作。然后将其转换为 CGSize。这个大小是文本的大小,所以如果你想要它周围有填充,只需在大小的宽度和高度上添加一个值:

let string: NSString = self.categoriesItems[indexPath.row].name
let size: CGSize = string.sizeWithAttributes(nil) // Enter font/size attributes here
return size