Фиксированные числа интервалов в AppKit

У меня есть приложение с таймером. Этот таймер находится в центре представления. Когда шрифтом по умолчанию в macOS был Helvetica Neue, это работало нормально. Кажется, что цифры шрифта расположены равномерно, поэтому при работе таймера все остается на месте.

Теперь с Сан-Франциско в качестве шрифта по умолчанию это не работает. Каждое число, кажется, имеет разную ширину, в результате чего размер таймера постоянно изменяется во время работы. Жесткое кодирование шрифта в Helvetica Neue устраняет проблему, но я хотел бы использовать шрифт, который по умолчанию используется в ОС.

Есть ли какая-то подсказка, которую я могу установить с помощью NSTextField, которая будет отображать системный шрифт по умолчанию с номерами фиксированной ширины, как раньше? Кажется, я помню, что это было доступно, но я не могу найти его. Я не хочу использовать шрифт фиксированной ширины, так как это нарушает эстетику. Похоже, приложение секундомера на iOS как-то это делает.


person Stephen H. Gerstacker    schedule 09.08.2017    source источник


Ответы (1)


Используйте этот метод класса NSFont

  • Быстрый

    class func monospacedDigitSystemFont(ofSize fontSize: CGFloat, weight: CGFloat) -> NSFont
    
  • Цель-C

    + (NSFont *)monospacedDigitSystemFontOfSize:(CGFloat)fontSize weight:(CGFloat)weight;
    

Доступна macOS 10.11+

person vadian    schedule 09.08.2017
comment
Да! Это именно то, что я искал. Спасибо! - person Stephen H. Gerstacker; 09.08.2017