【问题标题】:NSMenuItem setTitle with columnsNSMenuItem setTitle 与列
【发布时间】:2015-09-28 01:57:31
【问题描述】:

我想设置一个类似的标题

姓名:________等级:

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 我怀疑这是低效的解决方案 :-( 我仍然希望在这里看到人们的一些提示,因为我渴望尽可能提高性能

【问题讨论】:

  • 代码看起来不错,你得到了什么?
  • 很好的字符有不同的宽度:-( char i 大约是 2 像素,而 char m 5 :-(
  • 我通过创建NSView 并在其中添加NSTextFields 解决了这个问题,但我最终得到了5 NSTExtFields 我怀疑这是低效的解决方案:-(我仍然希望看到一些提示人们在这里,因为我渴望尽可能地提高性能
  • 也许我可以为您的文本选择一个monospaced font。请看答案。

标签: objective-c macos cocoa nsmenuitem


【解决方案1】:

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

【讨论】:

  • 谢谢,在我还在NSMutableParagraphStyle 上设置了defaultTabInterval 之后,这才有效
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多