2013-07-03 3 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"]; 
} 

당신은 또한 베스트 -를 추정 할 수 케이스에 "i"-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

관련 문제