带列的 NSMenuItem setTitle

NSMenuItem setTitle with columns

我想设置一个像

这样的标题

姓名:________Rank:

blbalb_______5

aksjdnaas____6

123123123..._7

q____________8

假设 _ = 空白

可能吗? 如果可以,有人可以指导我怎么做吗?

我试过这样做

- (NSString *)getFromatedAppDescription
{
//    NSMutableString * formatedString = [[NSMutableString alloc]init];

    NSString * name = _userName;
    if ([name length] > MAX_NAME_LENGTH)
    {
        name = [NSString stringWithFormat:@"%@...",[name substringToIndex: MAX_NAME_LENGTH - 3]];//Truncate Tail
    }

    return [NSString stringWithFormat:@"%-15s %d",[name UTF8String],_rank];
}

但是失败了:(

编辑:

我通过创建 NSView 并在其中添加 NSTextFields 解决了它,但我最终得到了 5 NSTExtFields 我怀疑这是一个低效的解决方案 :-( 我仍然希望看到来自这里的人的一些提示,因为我渴望尽可能地提高性能

您可以通过将文本字体设置为等宽字体来实现此目的,请参阅维基百科上的 Monospaced font

您可以使用 NSMenuItemattributedTitle(NSAttributedString*) 并使用 NSTextTab 属性设置右对齐或小数点对齐的制表位 NSMutableParagraphStyleattributedTitle(并且只需在标签和 attributedTitle 的字符串中的值之间添加一个制表符)。