NSString boundingRectWithSize возвращает излишне высокую высоту
Когда используешь[NSString boundingRectWithSize:options:attributes]
размер возвращаемого прямоугольника выше, чем я ожидал бы для определенных строк. Возвращенная высота, по-видимому, представляет максимально возможную высоту строки с заданными атрибутами, а не высоту самой строки.
Принимая те же атрибуты и параметры, высота, возвращаемая для строки ""cars
та же самая высота, возвращаемая для строки ""ÉTAS-UNIS
(обратите внимание на акцент на E).
Я бы ожидалboundingRectWithSize
рассматривать только символы в данной строке, которые, по моему мнению, вернут более короткую высоту для строки "".cars
На приложенных скриншотах ямы заполнили прямоугольник, возвращенный изboundingRectWithSize
и обрисовал красным, что я бы предположил, что должен был быть ограничительный прямоугольник. Ширина прямоугольника довольно большая, как я и ожидал, но высота значительно выше, чем я ожидал. Это почему?
Образец кода:
NSRect boundingRect = NSZeroRect;
NSSize constraintSize = NSMakeSize(CGFLOAT_MAX, 0);
NSString *lowercaseString = @"cars";
NSString *uppercaseString = @"ÉTAS-UNIS";
NSString *capitalizedString = @"Japan";
NSFont *drawingFont = [NSFont fontWithName:@"Georgia" size:24.0];
NSDictionary *attributes = @{NSFontAttributeName : drawingFont, NSForegroundColorAttributeName : [NSColor blackColor]};
boundingRect = [lowercaseString boundingRectWithSize:constraintSize options:0 attributes:attributes];
NSLog(@"Lowercase rect: %@", NSStringFromRect(boundingRect));
boundingRect = [uppercaseString boundingRectWithSize:constraintSize options:0 attributes:attributes];
NSLog(@"Uppercase rect: %@", NSStringFromRect(boundingRect));
boundingRect = [capitalizedString boundingRectWithSize:constraintSize options:0 attributes:attributes];
NSLog(@"Capitalized rect: %@", NSStringFromRect(boundingRect));
Выход:
Lowercase rect: {{0, -6}, {43.1953125, 33}}
Uppercase rect: {{0, -6}, {128.44921875, 33}}
Capitalized rect: {{0, -6}, {64.5, 33}}