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

时间:2011-01-17 12:38:57

标签: objective-c iphone ipad uilabel uifont

如何在iPhone / iPad的UILabel上设置粗体和斜体? 我搜索了论坛,但没有任何帮助我。有谁可以帮助我?

21 个答案:

答案 0 :(得分:235)

不要尝试使用字体名称。使用字体描述符不需要名称:

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];

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

}

然后你可以这样使用它:

myLabel.font = myLabel.font.boldItalic()

甚至可以添加其他特征,如Condensed:

myLabel.font = myLabel.font.withTraits(.TraitCondensed, .TraitBold, .TraitItalic)

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

按如下方式使用:

myLabel.font = myLabel.font.bold

myLabel.font = myLabel.font.italic

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

Swift 5

    func with(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont {
        guard let descriptor = self.fontDescriptor.withSymbolicTraits(UIFontDescriptor.SymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits)) else {
            return self
        }
        return UIFont(descriptor: descriptor, size: 0)
    }

    func without(_ traits: UIFontDescriptor.SymbolicTraits...) -> UIFont {
        guard let descriptor = self.fontDescriptor.withSymbolicTraits(self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptor.SymbolicTraits(traits))) else {
            return self
        }
        return UIFont(descriptor: descriptor, size: 0)
    }

答案 1 :(得分:130)

sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];

您可以设置一个字体名称列表来代替'fontWithName'属性。链接为here

答案 2 :(得分:100)

@Edinator看看这个..

myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];

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

答案 3 :(得分:8)

您可以通过点击字体字段中的字母“T”来设置标签的任何字体样式,系列和大小。

Label font settings

答案 4 :(得分:6)

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

myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];

答案 5 :(得分:6)

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

    [titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];

或者你可以简单地称之为:

    [titleText setFont:[UIFont boldSystemFontOfSize:16.0]];

答案 6 :(得分:3)

查看:this网址

答案 7 :(得分:3)

 btn.titleLabel.font=[UIFont fontWithName:@"Helvetica neue" size:10];
 btn.titleLabel.font =  [UIFont boldSystemFontOfSize:btnPrev.titleLabel.font.pointSize+3];

你也可以使用这个

做粗体标签/按钮字体

答案 8 :(得分:3)

Swift 3

粗体:

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

斜体:

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

答案 9 :(得分:3)

我对maksymilian wojakowski的反应进行了修改 您可以在哪里添加或删除特征

extension UIFont {

    func withTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor
            .withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits).union(self.fontDescriptor.symbolicTraits))
        return UIFont(descriptor: descriptor!, size: 0)
    }
    func withoutTraits(_ traits:UIFontDescriptorSymbolicTraits...) -> UIFont {
        let descriptor = self.fontDescriptor
            .withSymbolicTraits(  self.fontDescriptor.symbolicTraits.subtracting(UIFontDescriptorSymbolicTraits(traits)))
        return UIFont(descriptor: descriptor!, size: 0)
    }
    func bold() -> UIFont {
        return withTraits( .traitBold)
    }

    func italic() -> UIFont {
        return withTraits(.traitItalic)
    }

    func noItalic() -> UIFont {
        return withoutTraits(.traitItalic)
    }
    func noBold() -> UIFont {
        return withoutTraits(.traitBold)
    }
}

为例

label.font = label.font.italic().bold()

在重复使用单元格并且您想要删除放在前一个单元格中的标签上的斜体时非常有用

答案 10 :(得分:2)

我最近写了一篇关于UIFont API限制以及如何解决它的博客文章。 您可以在here

看到它

使用我在那里提供的代码,您可以轻松获得所需的UIFont:

UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-weight: bold; font-style: italic;"];

然后将其设置为您的UILabel(或其他): myLabel.font = myFont;

答案 11 :(得分:2)

正如在这些答案中已经提到的那样,您只需要正确的字体名称。我发现iOSFonts.com是确切知道要使用的名称的最有用的资源。

答案 12 :(得分:2)

示例粗体文字:

UILabel *titleBold = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 30)];
UIFont* myBoldFont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
[titleBold setFont:myBoldFont];

示例斜体文字:

UILabel *subTitleItalic = [[UILabel alloc] initWithFrame:CGRectMake(10, 35, 200, 30)];
UIFont* myItalicFont = [UIFont italicSystemFontOfSize:[UIFont systemFontSize]];
[subTitleItalic setFont:myItalicFont];

答案 13 :(得分:1)

这很简单。这是代码。

[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];

这会对你有帮助。

答案 14 :(得分:1)

更新Maksymilian Wojakowski对swift 3的真棒答案

extension UIFont {

func withTraits(traits:UIFontDescriptorSymbolicTraits...) -> UIFont? {
    guard let descriptorL = self.fontDescriptor.withSymbolicTraits(UIFontDescriptorSymbolicTraits(traits)) else{
        return nil
    }
    return UIFont(descriptor: descriptorL, size: 0)
}

func boldItalic() -> UIFont? {
    return withTraits(traits: .traitBold, .traitItalic)
}

}

答案 15 :(得分:0)

很多时候,加粗的文本在信息体系结构上都被视为另一层,因此在一行中没有加粗和常规,因此您可以将其拆分为两个标签/文本视图,一个为常规,并以粗斜体显示。并使用编辑器选择字体样式。

答案 16 :(得分:0)

尽管@tolbard提供的答案是惊人的,而且效果很好!

我觉得为仅用一行代码即可实现的事情创建扩展将是一个过度的追求。

通过使用label设置字体属性,可以为UIFontDescriptor中的相同文本提供粗体以及斜体样式,如下所示在下面的示例中使用 Swift 4.0

label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)

其他选项包括:

traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded

有关这些符号特征意味着什么的更多信息? visit here

答案 17 :(得分:0)

使用 Swift 5

  

对于样式=粗体

label.font = UIFont(name:"HelveticaNeue-Bold", size: 15.0)
  

对于样式=中

label.font = UIFont(name:"HelveticaNeue-Medium", size: 15.0)
  

对于样式=薄

label.font = UIFont(name:"HelveticaNeue-Thin", size: 15.0)

答案 18 :(得分:0)

只想提一下,

UIFont.systemFont(ofSize: 16, weight: UIFont.Weight.bold)
UIFont.boldSystemFont(ofSize: 16)

他们有不同的结果...

答案 19 :(得分:0)

这里的答案很好,但是如果您希望标签尊重用户的首选尺寸类别,请使用preferredFont

UIFont.systemFont(ofSize: UIFont.preferredFont(forTextStyle: .body).pointSize, weight: .bold)

答案 20 :(得分:0)

SwiftUI

如果您想更改字体的粗细而又不引起大小变化,则可以在swiftUI中轻松实现。

Text("Font weight")
   .font(Font.body.weight(.bold))

 Text("Font weight")
    .font(Font.largeTitle.weight(.thin))

有关更多信息,请阅读这些文章。