Я запутался в позиционировании текста в NSStatusBarButton.
Моя проблема в том, что у меня есть NSAttributedString, которая содержит два разных размера шрифта. Теперь я хочу расположить шрифт по центру по вертикали, а затем назначить его для атрибута атрибута NSStatusBarButton.
Следующая статья мне очень помогла: Центрирование двух шрифтов с разными размерами по вертикали в NSAttributedString
Но проблема в том, что принятое там решение не работает в StatusBar. Вот небольшой пример:
let test = NSMutableAttributedString()
test.append(NSAttributedString(string: "Te", attributes:[.font: NSFont.systemFont(ofSize: CGFloat(15))]))
test.append(NSAttributedString(string: " st", attributes:[.font: NSFont.systemFont(ofSize: CGFloat(10))]))
button.attributedTitle = test
Результат:
Со знанием другого поста StackOverflow центрирование будет выглядеть как это:
let test = NSMutableAttributedString()
test.append(NSAttributedString(string: "Te", attributes:[.font: NSFont.systemFont(ofSize: CGFloat(15))]))
test.append(NSAttributedString(string: " st", attributes:[
.font: NSFont.systemFont(ofSize: CGFloat(10)),
.baselineOffset: 2.5 // 15 - 10 = 5 / 2 = 2.5
]))
button.attributedTitle = test
Результат:
Следовательно, значения 2,5 неверны. После некоторого тестирования я обнаружил, что значение 1 подходит для этого сценария. Но я ищу общее решение, которое всегда работает - без ручного тестирования.
Зачем мне это нужно? Я хотел бы иметь смайлик (например, ??) и время рядом с ним в строке состояния моего приложения MacOS. Emoji должно быть намного больше, чем время. Пользователи также могут установить размер шрифта времени (8 - 20). Размер смайликов всегда остается неизменным (22).