41

-systemFontOfSize 太细,boldSystemFontOfSize 太粗。我需要一些介于两者之间的东西。

当我像这样创建 UIFont 时:

[UIFont boldSystemFontOfSize:14];

然后调试器打印这个字体信息:

font-family: ".Helvetica NeueUI"; 字体粗细:粗体;字体样式:正常;字体大小:14px

有时字体具有中等字体粗细。如何创建这种类型但重量中等的字体?

4

6 回答 6

85

iOS 8.2开始,您可以使用:

[UIFont systemFontOfSize:14 weight:UIFontWeightMedium];
于 2015-09-02T16:02:51.200 回答
25

调用NSLog(@"%@", [UIFont fontNamesForFamilyName:@"Helvetica Neue"]);会打印 Helvetica Neue 的所有可用字体样式,HelveticaNeue-Medium其中听起来像您想要的字体样式:

UIFont *font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:14.0f];

如果您想确保在系统字体更改时字体也会更改(例如,就像从 Helvetica 到 Helvetica Neue 的视网膜设备所做的那样),您可以首先获取系统字体,然后获取它familyNamepointSize使用中等重量检索一个+ fontNamesForFamilyName进而+ fontWithName:size:

于 2012-05-01T16:01:50.957 回答
17

斯威夫特 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)
}
于 2015-10-20T16:50:30.257 回答
8

斯威夫特 3:

UIFont.systemFont(ofSize: 14, weight: UIFontWeightMedium)
于 2017-06-20T10:53:40.120 回答
8

使用 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

于 2017-11-23T10:34:04.280 回答
0

Swift 2.3 并且不改变字体大小:

extension UIFont {
    var mediumFont: UIFont {
        return UIFont.systemFontOfSize(self.pointSize, weight: UIFontWeightMedium)
    }
}

用于:

titleLabel.font = titleLabel.font.mediumFont
于 2016-10-19T14:31:21.637 回答