这似乎很简单,但是无论出于什么原因,它都不起作用。我已经阅读过类似的文章,看来Font Traits词典可能存在问题?这是一个问题还是我只是完全缺少了什么?这是我第一次弄乱这样的字体,所以我认为可能是后者。
我不想使用常量或提供带有“ -bold”变体的字体。我想对字体粗细进行精细控制。
let traits = [UIFontWeightTrait : 1.0]
imgFontDescriptor = UIFontDescriptor(fontAttributes: [UIFontDescriptorNameAttribute: "Helvetica"])
imgFontDescriptor = imgFontDescriptor.fontDescriptorByAddingAttributes([UIFontDescriptorTraitsAttribute:traits])
imgTextFont = UIFont(descriptor: imgFontDescriptor!, size: 24.0)
研究:
根据iOS文档,使用数字值应该可以工作(我正在运行iOS 9.2):
UIFontWeightTrait
归一化的权重值作为NSNumber对象。有效值范围是-1.0到1.0。值0.0对应于常规或中等字体粗细。您还可以使用字体粗细常量来指定特定的粗细。有关可以使用的常量列表,请参见字体粗细。在iOS 7.0和更高版本中可用。
UIFont(descriptor: imgFontDescriptor!, size: 24.0)
返回一个与描述符匹配的字体。如果找不到与您的描述匹配的字体,则返回默认字体。因此,您无法手动控制体重。这取决于您使用的字体。如果字体支持该重量,它将返回该重量。
还有一件事,您应该使用[UIFontDescriptorFamilyAttribute: "Helvetica"]
。因此它将基于FamilyName和您的FontWeight确定FontName。
正确的方法是使用Apple lib中的常量:
public let UIFontWeightUltraLight: CGFloat
@available(iOS 8.2, *)
public let UIFontWeightThin: CGFloat
@available(iOS 8.2, *)
public let UIFontWeightLight: CGFloat
@available(iOS 8.2, *)
public let UIFontWeightRegular: CGFloat
@available(iOS 8.2, *)
public let UIFontWeightMedium: CGFloat
@available(iOS 8.2, *)
public let UIFontWeightSemibold: CGFloat
@available(iOS 8.2, *)
public let UIFontWeightBold: CGFloat
@available(iOS 8.2, *)
public let UIFontWeightHeavy: CGFloat
@available(iOS 8.2, *)
public let UIFontWeightBlack: CGFloat*/
您应该使用http://iosfonts.com/来确定姓氏支持的字体粗细。
如果是Helvetica:
let traits = [UIFontWeightTrait: UIFontWeightLight] // UIFontWeightBold / UIFontWeightRegular
let imgFontDescriptor = UIFontDescriptor(fontAttributes: [UIFontDescriptorFamilyAttribute: "Helvetica"])
imgFontDescriptor = imgFontDescriptor.fontDescriptorByAddingAttributes([UIFontDescriptorTraitsAttribute: traits])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句