首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算未知NSString的CGSize

计算未知NSString的CGSize
EN

Stack Overflow用户
提问于 2013-07-03 18:27:45
回答 2查看 236关注 0票数 0

如果我只知道一个未知字符串的最大字符数,而不知道确切的字符串,我如何找到它的CGSize呢?

我知道您可以在NSString上使用"sizeWithFont“方法计算特定NSString的大小,如下所示:

代码语言:javascript
运行
复制
UIFont * font = [UIFont systemFontOfSize:15];
CGSize stringSize = [aString sizeWithFont:font]; 
CGFloat width = stringSize.width;

但我正在寻找一种方法,当你不知道确切的字符串,而只知道字符串可能包含的字符数时。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-03 21:29:50

只有当您不知道字符串的确切字符时,才能估计CGSize。最坏的估计可能是用"M“或"W”字符填充整个字符串,因为我认为这应该是大多数字体中最宽的字符:

代码语言:javascript
运行
复制
int charCount = 10;
NSString *testString = @"";
for (int i = 0; i < charCount; i++) {
    testString = [testString stringByAppendingString:@"M"];
}

您还可以通过添加"i"-chars来估计最好的情况。你应该做大量的测试来找到在大多数情况下效果最好的字符。

票数 0
EN

Stack Overflow用户

发布于 2013-07-03 21:29:47

我不认为会有办法。

为什么需要传递字符串?

  • ,因为它占用宽度的字母,并根据选定的字体进行更改。比如,'lll‘会比'HHH’占用更少的空间,尽管两者包含的字母数相同(这里是3)。因此,必须提供字符。

解决此问题的方法

  • 提供一个最大宽度的字母,如H、Q、W等,并传递有多少个字母。例如:如果您需要5个字母的宽度,则执行如下语句:

UIFont * font = UIFont systemFontOfSize:15;CGSize stringSize =@“W”sizeWithFont:font;// 5次'W‘CGFloat width = stringSize.width;

现在您将获得最大宽度概率,它允许所有其他字符串概率。

这只是一个变通办法,我不认为iOS SDK中有确切的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17445582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档