【发布时间】:2011-02-12 01:22:09
【问题描述】:
根据文档,CTFramesetterSuggestFrameSizeWithConstraints ()“确定字符串范围所需的帧大小”。
不幸的是,此函数返回的大小永远不会准确。这是我正在做的事情:
NSAttributedString *string = [[[NSAttributedString alloc] initWithString:@"lorem ipsum" attributes:nil] autorelease];
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef) string);
CGSize textSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0,0), NULL, CGSizeMake(rect.size.width, CGFLOAT_MAX), NULL);
返回的尺寸总是计算出正确的宽度,但高度总是比预期的略短。
这是使用此方法的正确方法吗?
还有其他方式来布局Core Text吗?
似乎我不是唯一一个遇到这种方法问题的人。见https://devforums.apple.com/message/181450。
编辑:
我使用sizeWithFont: 用 Quartz 测量了相同的字符串,为属性字符串和 Quartz 提供相同的字体。以下是我收到的测量结果:
核心文本:133.569336 x 16.592285
石英:135.000000 x 31.000000
【问题讨论】:
-
遇到了同样的问题。如果我要求它计算 3 行,它总是比它应该计算的少一行,它会给我正确的计算 2.. 等等等等。
标签: cocoa cocoa-touch core-text