【问题标题】:'sizeWithFont(_:constrainedToSize:lineBreakMode:)' is unavailable: Use -boundingRectWithSize:options:attributes:context:'sizeWithFont(_:constrainedToSize:lineBreakMode:)' 不可用:使用 -boundingRectWithSize:options:attributes:context:
【发布时间】:2016-04-02 13:54:00
【问题描述】:

我必须根据 TextView 的文本来扩展其大小,但它显示了问题,但我无法修复它,所以请帮我解决这个问题。我发布了我尝试过的代码。

var size: CGSize = text.sizeWithFont(UIFont.boldSystemFontOfSize(13), constrainedToSize: textSize, lineBreakMode:NSLineBreakMode.ByWordWrapping)

【问题讨论】:

标签: ios swift uifont


【解决方案1】:

我将this ObjC question 的答案翻译成 Swift;可能让你绊倒的是你需要将String 转换为NSString

斯威夫特 4

let text = "Hello"
let font = UIFont.systemFont(ofSize: UIFont.systemFontSize)
let maxSize = CGSize(width: 100, height: CGFloat.greatestFiniteMagnitude)

let size = (text as NSString).boundingRect(with: maxSize,
        options: [.usesLineFragmentOrigin, .usesFontLeading],
        attributes: [NSFontAttributeName:font],
        context: nil)
    .size

斯威夫特 3

let text = "Hello"
let font = UIFont.systemFontOfSize(UIFont.systemFontSize())
let maxSize = CGSize(width: 100, height: CGFloat.max)

let size = (text as NSString).boundingRectWithSize(maxSize,
        options: [.UsesLineFragmentOrigin, .UsesFontLeading],
        attributes: [NSFontAttributeName:font],
        context: nil)
    .size

【讨论】:

  • 我使用此代码意味着它显示为“无法将 'UIFont' 类型的值转换为预期的参数类型 'CGSize'”。然后我在这里给出完整函数......让文本:NSString = message 。文本! let textSize: CGSize = CGSize(width: 260.0,height: 10000.0) let size = (text as NSString).boundingRectWithSize(UIFont.boldSystemFontOfSize(13), options: [NSStringDrawingOptions.UsesLineFragmentOrigin, .UsesFontLeading], attributes: [NSFontAttributeName:font ],上下文:无)
  • 感谢您帮助它现在正常工作...非常感谢@Kevin
  • 谢谢!很有用。
猜你喜欢
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
相关资源
最近更新 更多