簡體   English   中英

如何在 macos 菜單欄應用程序中顯示多行?

[英]How to display multiple rows in macos menubar app?

最初我認為添加新行應該有效。 問題是,行高太大了。 我怎樣才能使它更密集(彼此更近)?

在 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 和基線偏移重新啟動的方法)

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))

在此處輸入圖片說明

正如馬特所指出的,使用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))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM