API systemFontOfSize:weight:
API позволяет указать любой вес как CGFloat
, а iOS вернет самый подходящий шрифт.
Например, вместо UIFont.systemFontOfSize(17, weight: UIFontWeightRegular)
вы можете сделать UIFont.systemFontOfSize(17, weight: 0)
. Играйте с значением weight
, чтобы определить, можете ли вы получить шрифт, который появляется по желанию.
Другим вариантом может быть использование HTML & CSS с атрибутной строкой. Используя font-weight
, вы можете указать значение от 100 до 900, где 400 эквивалентно нормальному весу шрифта.
var htmlString = "<p>A</p>"
htmlString += "<style>p{font-family:'-apple-system'; font-size:17px; font-weight:300}</style>"
let htmlData = htmlString.dataUsingEncoding(NSUnicodeStringEncoding)!
let attributedString = try! NSAttributedString(data: htmlData, options: [
NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding
], documentAttributes: nil)
self.aLabel.attributedText = attributedString
Обновление: Пытаясь справиться с этим, ни одно решение не позволяет более точно контролировать вес шрифта. Оба будут отображать текст с ближайшим шрифтом для данного веса - Regular или Light, но между ними нет ничего. Возможно, вам придется прибегнуть к пользовательскому текстовому рисунку, если вы хотите добавить более толстый штрих к тонкому шрифту. Вы можете исследовать чертеж через NSAttributedString
's drawing API. Вы можете применить собственную ширину штриха с помощью NSStrokeWidthAttributeName
. Я сам этого не пробовал, но это была мысль, которую можно было бы расследовать.
Я попытался использовать 'CGFloat', а' UIFontWeightLight' шрифта SF - '-0.4'. И 'UIFontWeightRegular' является' 0', я установил его на '-0.2', чтобы получить средний вес между светом и регулярным, но он автоматически преобразуется в свет или регулярно, если число близко к которому. – TomSawyer
Вы можете проверить, я не могу получить точно вес шрифта клавиатуры. – TomSawyer
Вы можете попробовать использовать CSS @TomSawyer, см. Обновленный ответ – Joey