如何在iPhone/iPad的UILabel上设置粗体和斜体?

Edi*_*Edi 129 objective-c uilabel uifont ios swift

如何在UILabeliPhone/iPad 上设置粗体和斜体?我搜索了论坛,但没有任何帮助我.谁能帮助我?

Mak*_*ski 251

不要尝试使用字体名称.使用字体描述符,您不需要名称:

UILabel * label = [[UILabel alloc] init]; // use your label object instead of this
UIFontDescriptor * fontD = [label.font.fontDescriptor
            fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold
                            | UIFontDescriptorTraitItalic];
label.font = [UIFont fontWithDescriptor:fontD size:0];
Run Code Online (Sandbox Code Playgroud)

size:0 意思是'保持原样'

使用Swift尝试以下扩展:

extension UIFont {

    func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor()
            .fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits(traits))
        return UIFont(descriptor: descriptor, size: 0)
    }

    func boldItalic() -> UIFont {
        return withTraits(.TraitBold, .TraitItalic)
    }

}
Run Code Online (Sandbox Code Playgroud)

然后你可以这样使用它:

myLabel.font = myLabel.font.boldItalic()
Run Code Online (Sandbox Code Playgroud)

或者甚至添加像Condensed这样的其他特征:

myLabel.font = myLabel.font.withTraits(.TraitCondensed, .TraitBold, .TraitItalic)
Run Code Online (Sandbox Code Playgroud)

Swift 4的更新:

extension UIFont {
  var bold: UIFont {
    return with(traits: .traitBold)
  } // bold

  var italic: UIFont {
    return with(traits: .traitItalic)
  } // italic

  var boldItalic: UIFont {
    return with(traits: [.traitBold, .traitItalic])
  } // boldItalic


  func with(traits: UIFontDescriptorSymbolicTraits) -> UIFont {
    guard let descriptor = self.fontDescriptor.withSymbolicTraits(traits) else {
      return self
    } // guard

    return UIFont(descriptor: descriptor, size: 0)
  } // with(traits:)
} // extension
Run Code Online (Sandbox Code Playgroud)

使用方法如下:

myLabel.font = myLabel.font.bold

要么

myLabel.font = myLabel.font.italic

要么

myLabel.font = myLabel.font.with(traits: [ .traitBold, .traitCondensed ])

  • 不知道为什么这还没有得到更多的选票!对于没有粗体或斜体样式的字体,这太棒了! (4认同)
  • 唉唉.我明白为什么这可能不那么受欢迎了.仅适用于iOS7及以上版本... (4认同)
  • 不知道这是否应该在NDA下考虑,但是对于Xcode6和iOS8 GM种子,我得到一个自定义字体的nil字体描述符,因为它在iOS7下不是nil. (3认同)
  • 谢谢,这应该是接受的答案.+1 (2认同)
  • 只需快速说明,因为这个答案非常有用:`return withTraits(.TraitBold,.TraitCondensed)`应该是`return withTraits(.TraitBold,.TraitItalic)`来匹配函数名. (2认同)

Mob*_*oid 131

sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];
Run Code Online (Sandbox Code Playgroud)

您可以设置一个字体名称列表来代替'fontWithName'属性.链接在这里是 链接文本

  • 更好的答案是来自@Maksymilian Wojakowski的扩展方法.withTraits() (3认同)
  • 这是有问题的,因为您使用的是固定字体名称。由于这可能会发生变化,因此这不是一个好的解决方案。Maksymilian Wojakowski 的答案更好,也更灵活。 (3认同)

Sud*_*shu 100

@Edinator看看这个..

myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];
Run Code Online (Sandbox Code Playgroud)

在您想要的时间使用上述任何一种

  • 这两种风格都不起作用。在这种情况下,后者盛行斜体样式。感谢您的回复! (2认同)

Vil*_*usK 8

您可以通过单击字体字段中的字母"T"来设置标签的任何字体样式,族和大小.

标签字体设置


Vya*_*lav 7

斯威夫特 3

胆大:

let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)

斜体:

let italicFont = UIFont.italicSystemFont(ofSize:UIFont.labelFontSize)


Eve*_*eng 6

我有同样的问题需要在标签和按钮上应用Bold和Italic.您只需使用以下代码即可实现此效果:

myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];
Run Code Online (Sandbox Code Playgroud)


Joh*_*ato 6

使用iOS 7系统默认字体,如果您希望保留系统默认字体,则将使用helvetica neue bold.

    [titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];
Run Code Online (Sandbox Code Playgroud)

或者你可以简单地称它:

    [titleText setFont:[UIFont boldSystemFontOfSize:16.0]];
Run Code Online (Sandbox Code Playgroud)