当前位置:  开发笔记 > 编程语言 > 正文

如何计算Objective-C/Cocoa中字符串的bouding rect?

如何解决《如何计算Objective-C/Cocoa中字符串的boudingrect?》经验,为你挑选了3个好方法。

使用Objective-C/Cocoa如何根据特定字体计算绘制字符串所需的宽度和高度?在C#/ .Net中你可以这样做:

SizeF textSize = graphics.MeasureString(someString, someFont);

Objective-C/Cocoa中是否有类似的东西?



1> Jason Robert..:

这是一个基于danielpunkass和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语法看起来真的很陌生,并且因为Apple在Cocoa文档中没有嵌入太多的示例代码,那么学习这些东西有点困难.


+ [NSDictionary dictionaryWithObjectsAndKeys:]:每对的第二个对象必须是非零的.或者,您是否忘记了终止参数列表?

2> Brad Larson..:

以下代码类似于我用于跨平台文本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.



3> Peter Hosey..:

一种方法是sizeWithAttributes:,正如danielpunkass所说.另一种方法是创建一个NSAttributedString并询问它size.唯一的区别是,一种方式为您提供了一个具有文本和属性的对象(属性字符串),而另一种方式将它们分开.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有