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

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

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

有一个字体名称的列表,您可以设置的地方“ fontWithName”属性。链接是 给你

@ 流浪汉看看这个..。

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

在你想要的时间使用以上任何一个

我最近写了一篇关于 UIFont API 的限制以及如何解决它的博客文章。 你可以在这里的一个 href = “ http://ecliptesource.com/blogs/2012/07/26/uifont-from-a-css-Definition/”rel = “ nofollow”> < strong > 上看到它

通过我在那里提供的代码,您可以很容易地获得所需的 UIFont:

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

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

我有同样的问题,需要同时应用粗体和斜体的标签和按钮。您可以简单地使用以下代码来实现这一效果:

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

你也可以使用这个来做粗体的标签/按钮字体

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

使用 iOS7系统默认字体,如果你想保持系统默认字体,你将使用 helvetica neue 粗体。

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

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

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

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

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

或者甚至可以添加额外的特征,如浓缩:

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的更新

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


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


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






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

您可以设置任何字体样式,家庭,大小的标签,通过点击字母“ T”在 字体字段。

Label font settings

这很简单,这是密码。

[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];

这个能帮你。

Swift 3

大胆:

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

斜体:

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

我改变了 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()

它在重用单元格时非常有用,并且您希望删除在前一个单元格中的标签上使用的斜体

更新 Maksymilian Wojakowski对迅捷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)
}
}

示例粗体文字:

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

很多时候,粗体文本是在另一个层次上以信息架构的方式看待的,因此在一行中没有粗体和规则,所以您可以将它分成两个标签/textView,一个规则和粗体斜体。并使用编辑器选择字体样式。

尽管@tolbard 提供的答案令人惊讶,而且很有效!

我觉得为一行代码就可以实现的东西创建一个扩展,将是一个过度杀伤。

通过使用 UIFontDescriptor设置字体属性,你可以为 label中的同一文本设置 大胆斜体样式,如下面使用 Swift 4.0的例子所示:

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

其他选择包括:

traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded

想了解更多关于这些象征性特征的信息吗

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)

我只是想说,

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

他们有不同的结果..。

更新为 Swift 5和尊重设备的首选大小类别。

// Bold
label.font = UIFont.systemFont(ofSize: UIFont.preferredFont(forTextStyle: .body).pointSize, weight: .bold)


// Italic
label.font = UIFont.italicSystemFont(ofSize: UIFont.preferredFont(forTextStyle: .body).pointSize)

这里张贴的其他答案都很好,但是有硬编码的 pointSize。