-systemFontOfSize 太细,boldSystemFontOfSize 太粗。我需要一些介于两者之间的东西。
当我像这样创建 UIFont 时:
[UIFont boldSystemFontOfSize:14];
然后调试器打印这个字体信息:
font-family: ".Helvetica NeueUI"; 字体粗细:粗体;字体样式:正常;字体大小:14px
有时字体具有中等字体粗细。如何创建这种类型但重量中等的字体?
从iOS 8.2开始,您可以使用:
[UIFont systemFontOfSize:14 weight:UIFontWeightMedium];
调用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.0,xcode7.1
if #available(iOS 8.2, *) {
titleLabel?.font = UIFont.systemFontOfSize(15, weight: UIFontWeightMedium)
} else {
titleLabel?.font = UIFont(name: "HelveticaNeue-Medium", size: 15)
}
斯威夫特 3:
UIFont.systemFont(ofSize: 14, weight: UIFontWeightMedium)
使用 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)
相同的原理适用于.semibold
,.black
等,检查UIFont.Weight
Swift 2.3 并且不改变字体大小:
extension UIFont {
var mediumFont: UIFont {
return UIFont.systemFontOfSize(self.pointSize, weight: UIFontWeightMedium)
}
}
用于:
titleLabel.font = titleLabel.font.mediumFont