【发布时间】:2011-09-01 14:49:50
【问题描述】:
我希望我的文本适合特定的矩形,所以我需要一些东西来确定字体大小。 Questions 已经在一定程度上解决了这个问题,但是他们进行了搜索,这似乎非常低效,特别是如果您希望能够在实时拖动调整大小期间进行计算。以下示例可以改进为二进制搜索并通过限制高度,但它仍然是搜索。除了搜索之外,我如何计算字体大小以适合矩形?
#define kMaxFontSize 10000
- (CGFloat)fontSizeForAreaSize:(NSSize)areaSize withString:(NSString *)stringToSize usingFont:(NSString *)fontName;
{
NSFont * displayFont = nil;
NSSize stringSize = NSZeroSize;
NSMutableDictionary * fontAttributes = [[NSMutableDictionary alloc] init];
if (areaSize.width == 0.0 && areaSize.height == 0.0)
return 0.0;
NSUInteger fontLoop = 0;
for (fontLoop = 1; fontLoop <= kMaxFontSize; fontLoop++) {
displayFont = [[NSFontManager sharedFontManager] convertWeight:YES ofFont:[NSFont fontWithName:fontName size:fontLoop]];
[fontAttributes setObject:displayFont forKey:NSFontAttributeName];
stringSize = [stringToSize sizeWithAttributes:fontAttributes];
if (stringSize.width > areaSize.width)
break;
if (stringSize.height > areaSize.height)
break;
}
[fontAttributes release], fontAttributes = nil;
return (CGFloat)fontLoop - 1.0;
}
【问题讨论】:
标签: cocoa nstextfield