Есть ли средний шрифт между -systemFontOfSize: и -boldSystemFontOfSize:?
-systemFontOfSize слишком тонкая, а boldSystemFontOfSize слишком толстая. Мне нужно что-то между ними.
Когда я создаю UIFont следующим образом:
[UIFont boldSystemFontOfSize:14];
тогда отладчик печатает эту информацию о шрифте:
font-family: ".Helvetica NeueUI"; начертание шрифта: жирный; font-style: normal; font-size: 14px
Иногда шрифты имеют средний размер шрифта. Как создать шрифт этого типа, но со средним весом?
Ответы
Ответ 1
Вызов NSLog(@"%@", [UIFont fontNamesForFamilyName:@"Helvetica Neue"]);
печатает все доступные стили шрифтов для Helvetica Neue, среди них HelveticaNeue-Medium
, который похож на тот, который вы хотите:
UIFont *font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:14.0f];
Если вы хотите, чтобы шрифт также изменился при изменении системного шрифта (например, с помощью устройств сетчатки от Helvetica до Helvetica Neue), вы можете сначала получить системный шрифт, а затем взять его familyName
и pointSize
, чтобы получить один со средним весом с помощью + fontNamesForFamilyName
, а затем + fontWithName:size:
Ответ 2
Начиная с iOS 8.2 вы можете использовать:
[UIFont systemFontOfSize:14 weight:UIFontWeightMedium];
Ответ 3
Swift 2.0, xcode7.1
if #available(iOS 8.2, *) {
titleLabel?.font = UIFont.systemFontOfSize(15, weight: UIFontWeightMedium)
} else {
titleLabel?.font = UIFont(name: "HelveticaNeue-Medium", size: 15)
}
Ответ 4
Swift 3:
UIFont.systemFont(ofSize: 14, weight: UIFontWeightMedium)
Ответ 5
С помощью Swift 4 или 5 добавьте это расширение:
extension UIFont {
class func mediumSystemFont(ofSize pointSize:CGFloat) -> UIFont {
return self.systemFont(ofSize: pointSize, weight: .medium)
}
}
Затем:
myLabel.font = UIFont.mediumSystemFont(ofSize: 16)
Тот же принцип работает с полужирным, черным и т.д., Проверьте UIFont. Вес
Ответ 6
Swift 2.3 и не изменяя размер шрифта:
extension UIFont {
var mediumFont: UIFont {
return UIFont.systemFontOfSize(self.pointSize, weight: UIFontWeightMedium)
}
}
Использовать с:
titleLabel.font = titleLabel.font.mediumFont