2013-07-03 62 views
0

如何才能找到未知字符串的CGSize,我只知道它的最大字符數,但不是確切的字符串?計算未知NSString的CGSize

我知道,你可以上的NSString的「sizeWithFont」方法,這樣計算特定的NSString的大小:

UIFont * font = [UIFont systemFontOfSize:15]; 
CGSize stringSize = [aString sizeWithFont:font]; 
CGFloat width = stringSize.width; 

,但我在尋找一種方式,當你不知道確切的字符串,並只知道該字符串可能具有的字符數。

+0

爲了幫助人們回答您的問題,您可能需要使用您正在使用的語言對其進行標記,並且還會提供一個示例,顯示迄今爲止已嘗試過的內容以及哪些內容對您不起作用。 – robjohncox

+0

謝謝...我已經添加了標籤和更多的問題描述。 – user1673474

回答

0

只有當您不知道字符串的確切字符時才能估計CGSize。 最壞的情況下,估計將有可能與「M」或填補了整個字符串「W」字,因爲我覺得這應該是大多數字體字符最廣:

int charCount = 10; 
NSString *testString = @""; 
for (int i = 0; i < charCount; i++) { 
    testString = [testString stringByAppendingString:@"M"]; 
} 

你也可以估算BEST-通過添加「我」-chars的情況。你應該做大量的測試,以找出在大多數情況下效果最好的角色。

+0

非常感謝你,我認爲這是我們可以做的最好的方式... – user1673474

0

我不認爲會有辦法。

爲什麼需要傳遞一個字符串?

  • 由於其消耗寬度的字母以及按所選字體獲取更改的字母。就像'lll'將會覆蓋比'HHH'更小的空間,儘管它們都包含相同數量的字母(這裏是3)。因此它必須提供字符。

變通此

  • 提供了一封信消耗如H,Q,W等最大寬度,並通過信件究竟有多少。對於例:如果你需要的寬度爲5個字母,然後執行語句象下面這樣:
UIFont * font = [UIFont systemFontOfSize:15]; 

CGSize stringSize = [@"WWWWW"sizeWithFont:font]; // 5 times 'W' 

CGFloat width = stringSize.width; 

現在你會得到最大寬度概率,這使得所有其他的字符串的概率。

這只是一個解決方法,我不認爲在iOS SDK中有確切的解決方案。

+0

看來這是唯一的方法;) – user1673474