57

Interface Builderを使用して、UILabelのテキストにサイズ14の「Helvetica」のカスタムフォントを割り当てました。

複数の場所で同じラベルを再利用していますが、ある場所でテキストを太字で表示する必要があります。

UIFont 全体を再度作成する代わりに、既存のフォントを太字にするように指定する方法はありますか? これは私が今していることです:

myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14];
4

11 に答える 11

86

更新:
iOS 8 以降、フォント名をいじる必要はなくなりました。UIFontDescriptorSymbolicTraits代わりに、 : hereおよびhereを使用する新しい回答を参照してください。


myLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];

プログラムで設定したい場合は、太字が iOS でサポートされているかどうかを確認する必要があります。通常、太字または斜体の形式は、FontName-Bold、FontName-Italic、FontName-BoldItalic です。

今、太字の関数を書きます

-(void)boldFontForLabel:(UILabel *)label{
    UIFont *currentFont = label.font;
    UIFont *newFont = [UIFont fontWithName:[NSString stringWithFormat:@"%@-Bold",currentFont.fontName] size:currentFont.pointSize];
    label.font = newFont;
}

それからそれを呼び出します

[self boldFontForLabel:yourLabel];
于 2013-09-18T02:25:36.720 に答える
6

正しいフォント名が必要です。使用する名前を正確に知るには、iOSFonts.com が最も役立つリソースであることがわかりました。

FONT NAME "Arial-BoldItalicMT" を使用して、Bold + ITALIC を設定できます。

すべてのケースで機能します:

[myLabel setFont:[UIFont fontWithName:@"Arial-BoldItalicMT" size:17]];
于 2013-12-30T11:09:58.550 に答える
6

この回答を迅速に拡張します。

extension UIFont {
    func bold() -> UIFont {
        let descriptor = self.fontDescriptor().fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits.TraitBold)
        return UIFont(descriptor: descriptor, size: 0)
    }
}
于 2014-11-12T17:45:59.383 に答える
0

カスタムフォントにこれが必要な場合は、おそらく「拡張機能」自体は必要ありません...

どこからでも(つまり、クラスなしで)呼び出すことができる関数(上記のいくつかと同様)を追加するだけで、コードの1行だけを呼び出すことで、多くの場合、任意の文字列内の単語を強調できます。

constants.swift のようなファイルに移動するには:

import Foundation
import UIKit

func addBoldText(fullString: NSString, boldPartOfString: NSString, font: UIFont!, boldFont: UIFont!) -> NSAttributedString {
   let nonBoldFontAttribute = [NSFontAttributeName:font!]
   let boldFontAttribute = [NSFontAttributeName:boldFont]
   let boldString = NSMutableAttributedString(string: fullString as String, attributes:nonBoldFontAttribute)
   boldString.addAttributes(boldFontAttribute, range: fullString.rangeOfString(boldPartOfString as String))
   return boldString
}

次に、任意の UILabel に対してこの 1 行のコードを呼び出すことができます。

self.UILabel.attributedText = addBoldText("Check again in 30 DAYS to find more friends", boldPartOfString: "30 DAYS", font: normalFont!, boldFont: boldSearchFont!)


//Mark: Albeit that you've had to define these somewhere:

let normalFont = UIFont(name: "INSERT FONT NAME", size: 15)
let boldFont = UIFont(name: "INSERT BOLD FONT", size: 15)
于 2016-05-21T01:13:02.517 に答える