Измерение ширины в пикселях строки - PullRequest
16 голосов
/ 17 сентября 2009

Мне нужно измерить ширину строки в Cocoa Touch. Может кто-нибудь указать мне ссылку, которая объясняет, как это сделать?

Ответы [ 3 ]

27 голосов
/ 17 сентября 2009

В iPhone OS это немного отличается, вместо этого посмотрите NSString Справочник дополнений UIKit . Идея та же, что и в Cocoa для Mac OS X, но есть и другие методы.

Для отдельных строк текста используйте:

- (CGSize)sizeWithFont:(UIFont *)font 
              forWidth:(CGFloat)width 
         lineBreakMode:(UILineBreakMode)lineBreakMode

А для многострочных текстов используйте:

- (CGSize)sizeWithFont:(UIFont *)font 
     constrainedToSize:(CGSize)size 
         lineBreakMode:(UILineBreakMode)lineBreakMode

Использование UILineBreakMode в качестве аргумента для отдельных строк текста может сбивать с толку, но это потому, что разрыв строки также используется для определения способа усечения текста.

5 голосов
/ 17 сентября 2009

Взгляните на Справочник дополнений NSString Application Kit , в частности boundingRectWithSize:options:attributes:. Значение, возвращаемое этой подпрограммой, должно дать вам ширину вашего NSString.

0 голосов
/ 28 сентября 2015

Вышеуказанное решение устарело. Проверьте это для iOS 7 +

 sizeWithFont:constrainedToSize:lineBreakMode 

устарела. Используйте приведенный ниже фрагмент кода,

UIFont *font=[UIFont fontWithName:@"Arial" size:16.f];

NSString *name = @"APPLE";

CGSize size = [name sizeWithAttributes:@{NSFontAttributeName:font}];
...