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
是您希望限制文本的任意大小
您可以使用 NSString
的 sizeWithAttributes
函数来执行此操作。然后将其转换为 CGSize
。这个大小是文本的大小,所以如果你想要它周围有填充,只需在大小的宽度和高度上添加一个值:
let string: NSString = self.categoriesItems[indexPath.row].name
let size: CGSize = string.sizeWithAttributes(nil) // Enter font/size attributes here
return size
我有这个函数,用于根据字符串长度设置大小。
类似的东西 -
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
是您希望限制文本的任意大小
您可以使用 NSString
的 sizeWithAttributes
函数来执行此操作。然后将其转换为 CGSize
。这个大小是文本的大小,所以如果你想要它周围有填充,只需在大小的宽度和高度上添加一个值:
let string: NSString = self.categoriesItems[indexPath.row].name
let size: CGSize = string.sizeWithAttributes(nil) // Enter font/size attributes here
return size