gpt4 book ai didi

ios - NSString boundingRectWithSize 返回不必要的高度

转载 作者:IT王子 更新时间:2023-10-29 08:14:32 24 4
gpt4 key购买 nike

当使用 [NSString boundingRectWithSize:options:attributes] 时,对于某些字符串,返回的矩形的大小比我预期的要高。返回的高度似乎表示具有给定属性的字符串的最大可能高度,而不是字符串本身的高度。

假设相同的属性和选项,字符串“cars”返回的高度与字符串“ÉTAS-UNIS”返回的高度相同(注意重音E).

我原以为 boundingRectWithSize 只考虑给定字符串中的字符,在我看来,这会为字符串“cars”返回一个较短的高度。

在随附的屏幕截图中,我填充了从 boundingRectWithSize 返回的矩形,并用红色勾勒出我认为边界矩形应该是什么。矩形的宽度与我预期的差不多,但高度比我预期的要高得多。这是为什么?

Bounding Rect Example

示例代码:

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}}

最佳答案

您可能想在选项中使用 NSStringDrawingUsesDeviceMetrics。来自docs :

NSStringDrawingUsesDeviceMetrics

Use the image glyph bounds (instead of the typographic bounds) when computing layout.

关于ios - NSString boundingRectWithSize 返回不必要的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21271935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com