gpt4 book ai didi

ios - iPhone/iPad的UILabel如何设置粗体和斜体?

转载 作者:IT老高 更新时间:2023-10-28 12:19:15 26 4
gpt4 key购买 nike

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

最佳答案

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

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

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

关于ios - iPhone/iPad的UILabel如何设置粗体和斜体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4713236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com