//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}];
}
您好,所以我正在尝试将我的文本居中在由用户输入的像素绘制的矩形中心,它可以是100x100
或1000x1000
,因为他们喜欢来自ScreenSizeWidth
或ScreenSizeHeight
。用户输入ScreenFontSize
打印在绘制的矩形顶部。 screenFontsize
变化,屏幕大小也会发生变化,因此在矩形中打印的字符数也会发生变化。
我想出了如何将其放置在垂直轴的中心,但无法弄清楚如何水平放置。
这个想法也许以某种方式获得屏幕尺寸标签的宽度,并以矩形宽度的大小为中心,但如何做到这一点超出了我的范围。
这是它从上面打印在我的当前代码上的内容 - 在此处输入图像描述
您可以使用以下NSString
方法之一:
- (NSSize)sizeWithAttributes:(NSDictionary<NSString *, id> *) attributes
- (NSRect)boundingRectWithSize:(NSSize)size
options:(NSStringDrawingOptions)options
attributes:(NSDictionary<NSString *, id> *)attributes
context:(NSStringDrawingContext *)context
以确定呈现时文本的长度,然后执行将其居中所需的数学运算。
呵呵