如何计算Objective-C/Cocoa中字符串的bouding rect?
使用Objective-C/Cocoa如何计算基于特定字体绘制字符串所需的宽度和高度?在C#/.Net中,您可以这样做:如何计算Objective-C/Cocoa中字符串的bouding rect?,objective-c,cocoa,Objective C,Cocoa,使用Objective-C/Cocoa如何计算基于特定字体绘制字符串所需的宽度和高度?在C#/.Net中,您可以这样做: SizeF textSize = graphics.MeasureString(someString, someFont); Objective-C/Cocoa中有类似的功能吗?您使用的是NSString的方法。正如Danielpunkas所说,一种方法是。另一种方法是创建一个NSAttributedString,并要求它提供其属性。唯一的区别是,一种方法将文本和属性一起提
SizeF textSize = graphics.MeasureString(someString, someFont);
Objective-C/Cocoa中有类似的功能吗?您使用的是
NSString
的方法。正如Danielpunkas所说,一种方法是。另一种方法是创建一个NSAttributedString,并要求它提供其属性。唯一的区别是,一种方法将文本和属性一起提供给对象(属性字符串),而另一种方法将它们分开。以下代码与我用于跨平台文本CALayer的代码类似:
#if defined(TARGET_IPHONE_SIMULATOR) || defined(TARGET_OS_IPHONE)
UIFont *theFont = [UIFont fontWithName:fontName size:fontSize];
CGSize textSize = [text sizeWithFont:theFont];
#else
NSFont *theFont = [NSFont fontWithName:fontName size:fontSize];
CGSize textSize = NSSizeToCGSize([text sizeWithAttributes:[NSDictionary dictionaryWithObject:theFont forKey: NSFontAttributeName]]);
#endif
这将为名为text的NSString提供CGSize,字体名称为fontName,大小为fontSize。以下是一个基于Danielpunkas和Peter Hosey给出的答案的具体示例:
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[NSFont fontWithName:@"Helvetica" size:12], NSFontAttributeName, nil];
NSAttributedString *text = [[NSAttributedString alloc] initWithString:@"Hello" attributes: attributes];
NSSize textSize = [text size];
对于像我这样刚接触Objective-C/Cocoa的人来说,一个例子真的很有帮助。如果你来自C++/Java/C#或任何Objective-C语法看起来非常陌生的地方,而且苹果公司没有在他们的Cocoa文档中嵌入太多的示例代码,学习这些东西有点困难。如果你使用演示者,例如
UILabel
/NSLabel
(而不是要求字符串自己绘制)。那么你应该问这个物体正确的尺寸
有关详细分析,请参阅。Ohh在iOS6下,您可以通过以下方式获得正确的大小:
CGSize textSize = [theString sizeWithFont:theFont
forWidth:160.0f
lineBreakMode:NSLineBreakByWordWrapping];
+[NSDictionary Dictionary WithObjects和Keys:]:每对中的第二个对象必须为非零。或者,您是否忘记零终止参数列表?没有NSLabel。UILabel的Cocoa对应项是NSTextField(禁用了带边框的
和可编辑的)。