UILabel
iPhone / iPadで太字と斜体を設定するにはどうすればよいですか?フォーラムを検索しましたが、何も役に立ちませんでした。誰か助けてもらえますか?
19 に答える
フォント名で遊んでみないでください。フォント記述子を使用すると、名前は必要ありません。
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 ])
Swift5のアップデート
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)
}
}
sectionLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:18];
'fontWithName'属性の代わりに設定できるフォント名のリストがあります。リンクはこちらです
@Edinatorはこれを見てください。
myLabel.font = [UIFont boldSystemFontOfSize:16.0f]
myLabel.font = [UIFont italicSystemFontOfSize:16.0f];
上記のいずれかを必要なときに使用してください
スウィフト3
大胆な:
let bondFont = UIFont.boldSystemFont(ofSize:UIFont.labelFontSize)
イタリック:
let italicFont = UIFont.italicSystemFont(ofSize:UIFont.labelFontSize)
ラベルとボタンに太字と斜体の両方を適用する必要がある同じ問題があります。この効果を実現するには、次のコードを使用するだけです。
myLabel.font = [UIFont fontWithName:@"Arial-BoldItalic" size:30.0];
iOS 7システムのデフォルトフォントでは、システムのデフォルトフォントを維持したい場合は、helveticaneueboldを使用します。
[titleText setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0]];
または、単にそれを呼び出すことができます:
[titleText setFont:[UIFont boldSystemFontOfSize:16.0]];
btn.titleLabel.font=[UIFont fontWithName:@"Helvetica neue" size:10];
btn.titleLabel.font = [UIFont boldSystemFontOfSize:btnPrev.titleLabel.font.pointSize+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()
セルを再利用していて、前のセルのラベルに付けた斜体を削除したい場合に便利です
これらの回答ですでに述べたように、必要なのは正しいフォント名だけです。iOSFonts.comは、使用する名前を正確に知るための最も役立つリソースであることがわかり ました。
最近、UIFontAPIの制限とその解決方法についてブログに投稿しました。ここで見ることができます
私がそこで提供するコードを使用すると、次のように簡単に目的のUIFontを取得できます。
UIFont *myFont = [FontResolver fontWithDescription:@"font-family: Helvetica; font-weight: bold; font-style: italic;"];
次に、次のコマンドを使用してUILabel(またはその他)に設定します。
myLabel.font = myFont;
MaksymilianWojakowskiのswift3の素晴らしい答えを更新する
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];
@tolbardによって提供された答えは素晴らしく、うまく機能しますが!
たった1行のコードで実現できる拡張機能を作成するのはやり過ぎだと思います。
Swift 4.0を使用して、以下の例で以下に示すようにフォントプロパティを設定することにより、同じテキストの太字と斜体のスタイルを取得できます。 label
UIFontDescriptor
label.font = UIFont(descriptor: UIFontDescriptor().withSymbolicTraits([.traitBold, .traitItalic])!, size: 12)
その他のオプションは次のとおりです。
traitLooseLeading
traitTightLeading
traitUIOptimized
traitVertical
traitMonoSpace
traitCondensed
traitExpanded
それらの象徴的な特徴が何を意味するかについての詳細は?ここにアクセス
これは非常に簡単です。これがコードです。
[yourLabel setFont:[UIFont boldSystemFontOfSize:15.0];
これはあなたを助けます。
多くの場合、太字のテキストは別のレベルで情報アーキテクチャの方法で見なされるため、1行に太字で規則的ではないため、1つは規則的で太字の斜体の2つのラベル/textViewに分割できます。そして、エディターを使用してフォントスタイルを選択します。
Swift5を使用
スタイルの場合=BOLD
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)
ここに投稿された他の回答は良いですが、pointSizesがハードコーディングされています。