Bei Verwendung von [NSString boundingRectWithSize:options:attributes]
ist die Größe des zurückgegebenen Rectals höher als bei bestimmten Strings. Die zurückgegebene Höhe scheint die maximal mögliche Höhe einer Zeichenfolge mit den angegebenen Attributen und nicht die Höhe der Zeichenfolge selbst darzustellen.NSString boundingRectWithSize, das unnötig hohe Höhe zurückgibt
Unter der Annahme der gleichen Attribute und Optionen ist die für die Zeichenfolge "cars
" zurückgegebene Höhe die gleiche Höhe, die für die Zeichenfolge "ÉTAS-UNIS
" zurückgegeben wird (beachten Sie den Akzent auf dem E).
Ich hätte erwartet boundingRectWithSize
, nur die Zeichen in der gegebenen Zeichenfolge zu berücksichtigen, die meiner Meinung nach eine kürzere Höhe für die Zeichenfolge "cars
" zurückgegeben haben würde.
In den angehängten Screenshots habe ich das von boundingRectWithSize
zurückgegebene Rechteck ausgefüllt und rot umrissen, was ich angenommen hätte, dass der Bounding Rect hätte sein sollen. Die Breite des Rect ist so ziemlich wie ich es erwarten würde, aber die Höhe ist wesentlich höher als ich erwartet hätte. Warum das?
Beispielcode:
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));
Ausgang:
Lowercase rect: {{0, -6}, {43.1953125, 33}}
Uppercase rect: {{0, -6}, {128.44921875, 33}}
Capitalized rect: {{0, -6}, {64.5, 33}}
Bitte überprüfen Sie die Antwort auf die ähnliche Frage hier- [http://stackoverflow.com/a/27289303/591811][1] [1]: http://stackoverflow.com/a/27289303/591811 – shoan