UIFont - как получить тонкий шрифт системы

UIFont имеет методы для получения обычного шрифта (systemFontOfSize) или полужирного шрифта (boldSystemFontOfSize), но как получить "тонкий системный шрифт", доступный через раскадровку?

Передача "system-thin" на UIFont Контрактор не работает, этот конструктор работает только для несистемных шрифтов.

Ответ 1

Вы можете использовать тонкий вес системного шрифта:

UIFont.systemFont(ofSize: 34, weight: UIFontWeightThin)

Список доступных весов для Сан-Франциско:

UIFontWeightUltraLight
UIFontWeightThin
UIFontWeightLight
UIFontWeightRegular
UIFontWeightMedium
UIFontWeightSemibold
UIFontWeightBold
UIFontWeightHeavy
UIFontWeightBlack

san francisco font weights

Начиная с iOS 11, UIFontWeight* был переименован в UIFont.Weight.*. Подробнее вы можете получить здесь https://developer.apple.com/documentation/uikit/uifont.weight.

Ответ 2

Начиная с iOS 8.2, теперь вы можете использовать UIFont.systemFontOfSize(_ fontSize: CGFloat, weight weight: CGFloat):

UIFont.systemFontOfSize(19, weight: UIFontWeightLight)

iOS SDK предоставил константы для весов:

UIFontWeightUltraLight
UIFontWeightThin
UIFontWeightLight
UIFontWeightRegular
UIFontWeightMedium
UIFontWeightSemibold
UIFontWeightBold
UIFontWeightHeavy

Использование системного шрифта лучше, чем создание шрифта, основанного на имени шрифта, когда вы хотите использовать системные шрифты, так как iOS может изменять свои системные шрифты на iOS (например, когда они делали это с Helvetica Neue в iOS 7, а теперь, в Сан-Франциско в iOS 9).

Итак, я бы предложил включить TTF файл шрифта, который вы хотите использовать в качестве файла ttf, как пользовательский шрифт и использовать пользовательский шрифт в своем приложении.

Это особая причина, почему я не люблю Apple. Никогда не пойду, что говорит Apple. Всегда делай то, что мы хотим. Apple продолжает изменять шрифт по умолчанию для каждой ОС.

Ответ 3

Также, если вы хотите сохранить одинаковый размер шрифта и просто изменить вес, используйте его из целевого размера шрифта элемента. Например:

demoLabel.font = UIFont.systemFont(ofSize: demoLabel.font.pointSize, weight: UIFontWeightThin)

с этим вы можете сохранить размер шрифта по умолчанию и просто изменить вес.

Начиная с iOS 11, UIFontWeightThin был переименован в UIFont.Weight.thin. Подробнее вы можете получить здесь https://developer.apple.com/documentation/uikit/uifont.weight.