在我问我的问题,这是从苹果文件重新:如何确定宽度的一个字符串中使用石英:

如果文本的测量是重要的您应用,它是可能的 计算使用石英2D功能。但是,你首先 考虑使用游戏,其强度在文本和布局 测量。游戏有多种功能,得到文本的指标。不 只有你能得到之后布局的文字指标,但是,在罕见的情况下 你需要他们,可以得到前版文本的指标。不像 石,为此,必须执行的计算自己,游戏 计算测量。例如,可以获得 像矩形文本的通过调用游戏的功能 ATSUMeasureTextImage.

如果你决定,石英文本适合你的需要比游戏(或 可可),可以按照这些步骤,以测量宽度的文本之前 石英提请它:

  1. 叫功能CGContextGetTextPosition获得的目前案文的位置。
  2. 设置文本的绘制模式kCGTextInvisible使用功能CGContextSetTextDrawingMode.
  3. 绘制文本的通过调功能CGContextShowText绘制文本在目前的案文的位置。
  4. 确定最后案文中的位置,通过调用的功能CGContextGetTextPosition.
  5. 减去的起始位置,从结束的位置确定宽的案文。

这里是我的问题:

  1. 这真的是最好的方法确定的宽度的一个字符串中使用核心的图形?这似乎是站不住脚的,因为我的文本的共存与2D图形的要素,我想到使用相同的上下文的所有呈现。我希望会有某些紧凑的方法,如:

    CGContextGetTextWidthAndHeight(context, text);
    
  2. 我读过这游戏是过时的,要被替代的核心文本。这是真的如果是这样,它是在iOS?

有帮助吗?

解决方案

在iPhone上SDK,有一个家庭的方法 NSString 提供你想要什么。

作为iOS7.0, 这些方法是:

- boundingRectWithSize:options:attributes:context:
- sizeWithAttributes:

在旧版本的我们有这些,现在已过时:

– sizeWithFont:  
– sizeWithFont:forWidth:lineBreakMode:  
– sizeWithFont:constrainedToSize:  
– sizeWithFont:constrainedToSize:lineBreakMode:  
– sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:

其他提示

在进行绘图的操作的在线比其他UI线,必须使用的技术说明。这是特别重要的是要注意的时候用的东西喜欢CATiledLayer,其执行,它是异步的背景线,或在制定中的图形的背景对于任何其他原因。

我同意PGB当你这样做"简单"的图形和你们保证,上运行的主线。然而,sizeWithFont是做同样的事情的技术,你描述-它只是做它为你使用UIGraphicsGetCurrentContext().

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top