【问题标题】:Determining size for text in iOS 7在 iOS 7 中确定文本的大小
【发布时间】:2014-03-20 16:16:07
【问题描述】:

我对在 iOS 7 中使用字体属性和 sizeWithAttributes 有点困惑。

显然,这不能正常工作,因为返回的大小(如果使用)会剪切我的文本。

例如

NSDictionary * attributes = label.font.fontDescriptor.fontAttributes;
CGSize labelSize = [str sizeWithAttributes:attributes];

如果不是 font.fontDescriptor.fontAttributes,获取 sizeWithAttributes 所需的所有字体属性的正确方法是什么?

【问题讨论】:

  • 您是否在返回的坐标上调用ceil(),如前所述,例如here?这可能会导致几个像素的裁剪。
  • 谢谢 - 我不是,但返回的尺寸太差了。

标签: ios objective-c ios7


【解决方案1】:

您将字体的属性传递给 sizeWithAttributes,而不是您需要传递字符串的所需属性。将第二行改为

CGSize labelSize = [str sizeWithAttributes:@{NSFontAttributeName : label.font}];

【讨论】:

  • 谢谢!为什么在这种情况下传递字体的属性并没有为字符串指定所需的属性,我仍然有点困惑。字体的属性包含字体名称和文本大小。我认为该方法无法与重新确定字体的方法一起使用,并且...它可能会根据默认字体返回值?
  • 未来的问题:XCode 说 UITextAttributeFont 在 iOS 7 中已被弃用。所以这确实让我的问题没有得到解答:在 iOS 7 中执行此操作的正确方法是什么?
  • 字体只是您可以为字符串指定的属性之一。来自 sizeWithAttributes 的文档 - “这些是可以应用于 NSAttributedString 对象的相同属性”。键列表在 NSAttributedString UIKit 附加文档,部分 - CharacterAttributes 中给出。将密钥名称更改为正确的名称
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
相关资源
最近更新 更多