【问题标题】:iOS Swift - CGSizeFromString throws CGSizeZeroiOS Swift - CGSizeFromString 抛出 CGSizeZero
【发布时间】:2015-03-23 20:28:26
【问题描述】:

我有这个函数用来设置字符串长度的大小。 类似的东西 - Swift iOS - Tag collection view

categoriesItems 中的第一项是“年龄”

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

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

        return cellWidth
}

【问题讨论】:

  • 我认为CGSizeFromString 不是您要找的。实际上它是这样使用的:var size : CGSize = CGSizeFromString("{320,568}") 从特定格式的字符串创建CGSize,而不是基于字符串长度。
  • 是的。你是对的。但这不是我想要的答案。

标签: ios swift view collections cgsize


【解决方案1】:

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

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 是您希望限制文本的任意大小

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多