-systemFontOfSize:和-boldSystemFontOfSize之间是否有中等重量字体:?

问题描述 投票:36回答:6

-systemFontOfSize太薄了,而boldSystemFontOfSize太粗了。我需要介于两者之间。

当我创建像这样的UIFont时:

[UIFont boldSystemFontOfSize:14];

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

font-family:“。Helvetica NeueUI”; font-weight:bold; font-style:normal; font-size:14px

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

iphone ios ipad uifont
6个回答
24
投票

调用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:减肥


82
投票

iOS 8.2开始,您可以使用:

[UIFont systemFontOfSize:14 weight:UIFontWeightMedium];

17
投票

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)
}

6
投票

斯威夫特3:

UIFont.systemFont(ofSize: 14, weight: UIFontWeightMedium)

2
投票

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


0
投票

Swift 2.3并没有改变字体大小:

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

用于:

titleLabel.font = titleLabel.font.mediumFont
© www.soinside.com 2019 - 2024. All rights reserved.