0

最初我认为添加新行应该可行。问题是,行高太大。我怎样才能使它更密集(彼此靠近)?

在 git开始的第 41 行有以下示例。但苹果文档说 NSStatusItem 内部的自定义视图已被弃用。(不确定它是否在 NSMenuItem 内部的视图中被弃用)

        let statusBar = NSStatusBar.system
        statusBarItem = statusBar.statusItem(withLength: NSStatusItem.squareLength)
        statusBarItem.button?.title = "123\n456"

UPD 到目前为止我得到了什么。它不是以 Y 为中心的。并且statusItem?.button?.frame = CGRect(x: 0.0, y: -2.0, ...似乎不正确并将前导图标移动到底部。

var comb = NSMutableAttributedString(attributedString: str1)
comb.append(br) // new line
comb.append(str2)
let paragraphStyle = NSMutableParagraphStyle()
        
paragraphStyle.maximumLineHeight = 9

comb.addAttribute(NSAttributedString.Key.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, comb.length))
statusItem?.button?.attributedTitle = comb

UPD(使用\n 和baselineoffset 重新启动的方法)

var comb = NSMutableAttributedString(attributedString: NSAttributedString(string: "\n")) // this
comb.append(top)
comb.append(br)
comb.append(bottom)

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.maximumLineHeight = 9
comb.addAttribute(NSAttributedString.Key.baselineOffset, value: 3.0, range:NSMakeRange(0, comb.length))

在此处输入图像描述

4

1 回答 1

1

正如马特所指出的,使用attributeTitleNSMutableParagraph

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.maximumLineHeight = 9
paragraphStyle.alignment = .left

列格式可以通过使用制表符、空格或其他分隔符来实现

NSAttributedString(string: "\n10 \u{2022} 220 \u{2022} 4999", attributes: textAttr) // this is a row

statusItem?.button?.attributedTitle = rows

并从底部移动文本:

rows.addAttribute(NSAttributedString.Key.baselineOffset, value: 2.0, range:NSMakeRange(0, rows.length))

在此处输入图像描述

于 2020-11-23T16:05:26.187 回答