我有一个自定义按钮: My Button http://cld.ly/29ubq
我需要将文本置于中心,这是我的代码:
NSMutableParagraphStyle *style =
[[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setLineBreakMode:NSLineBreakByWordWrapping];
[style setAlignment:NSLeftTextAlignment];
att = [[NSDictionary alloc] initWithObjectsAndKeys:
style, NSParagraphStyleAttributeName,
[NSColor blackColor],
NSForegroundColorAttributeName, nil];
[style release];
// other Drawing code here
[[self title] drawInRect:[self bounds] withAttributes:att];
如何将文本置于按钮中心(不是边界的中心)?
答案 0 :(得分:10)
您希望首先使用NSString -sizeWithAttributes:
获取标题的大小。然后,您可以使用该大小来调整边界内的标题图。
这有一个诀窍,因为在这个过程中,你几乎总会在某一点上除以2。当你这样做时,你可能会得到一个半像素的结果,Cocoa很乐意使用它。但是,它会导致文本模糊。你几乎总是想在你的坐标上调用floor()
,然后再画上它们,让自己回到整体像素上。
编辑:居中的一个基本例子(这应该正确编译,我没有编译它,我最近的工作已经在iPhone上颠倒了):
NSRect rect;
rect.size = [[self title] sizeWithAttributes:att];
rect.origin.x = floor( NSMidX([self bounds]) - rect.size.width / 2 );
rect.origin.y = floor( NSMidY([self bounds]) - rect.size.height / 2 );
[[self title] drawInRect:rect withAttributes:att];
无论如何,这些都是这样的。您可能希望因为按钮的绘制方式而略微偏移,但这是基本想法。
答案 1 :(得分:0)
您可能对Setting a Button’s Image感兴趣,这也解释了如何相对于按钮的图像定位标题。