#swift #macos #nsstatusitem #nsstatusbar
#swift #macos #nsstatusitem #nsstatusbar
Вопрос:
Первоначально я думал, что добавление новой строки должно сработать. Проблема в том, что высота строки слишком велика. Как я могу сделать его более плотным (ближе друг к другу)?
В начальной строке git 41 есть следующий пример. Но в документах Apple говорится, что пользовательский вид внутри NSStatusItem устарел. (не уверен, что он устарел для представлений внутри NSMenuItem)
let statusBar = NSStatusBar.system
statusBarItem = statusBar.statusItem(withLength: NSStatusItem.squareLength)
statusBarItem.button?.title = "123n456"
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))
Комментарии:
1. Вместо
title
этого установите значениеattributeTitle
в атрибутивную строку со стилем абзаца с меньшим значением высоты строки.
Ответ №1:
Как отметил Мэтт, используйте 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))