[英]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))
正如馬特所指出的,使用attributeTitle
和NSMutableParagraph
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.