NSString字符串,格式为:position / placement

时间:2016-06-04 19:00:32

标签: objective-c xcode macos

//Screen Size Label
if (_screenFontEnable) {
        [_sfColor set];
        NSString *canvasLabel = [NSString stringWithFormat:@"%@ \n W:%i/H:%i",_label,screenSizeWidth,screenSizeHeight ];
        [canvasLabel drawAtPoint:NSPointFromString([NSString stringWithFormat:@"{%i,%i}",boarder+(((screenSizeWidth/2)-_screenFontSize)),boarder+((screenSizeHeight/2)-_screenFontSize)]) withAttributes:@{NSFontAttributeName:[NSFont systemFontOfSize:screensize], NSForegroundColorAttributeName:_sfColor}];
}

你好,所以我试图将我的文字居中放在用户输入的矩形中心,像素可能是100x1001000x1000,因为他们喜欢来自ScreenSizeWidthScreenSizeHeight。用户输入ScreenFontSize也打印在绘制的矩形顶部。 screenFontsize更改,以及屏幕大小,以便在rect中打印的字符数更改。

我想出了如何将它放在垂直轴的中心,但却无法弄清楚如何水平地做到这一点。

这个想法可能会以某种方式获得屏幕尺寸标签的宽度并且以矩形宽度为中心,但是如何做到这一点超出了我的想法。

这是我在上面的当前代码上打印的内容 - enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用NSString方法之一:

- (NSSize)sizeWithAttributes:(NSDictionary<NSString *, id> *) attributes
- (NSRect)boundingRectWithSize:(NSSize)size
                       options:(NSStringDrawingOptions)options
                    attributes:(NSDictionary<NSString *, id> *)attributes
                       context:(NSStringDrawingContext *)context

确定渲染时文本的长度,然后进行中心化所需的数学运算。

HTH