2013-01-08 10 views
8

私の文字列の一部のサイズを小さくしようとしていますが、以下のコードを使用しています。私の出力が正しくありません。私は最初のフォント属性が指定された範囲ではなく、文字列全体で使用されているのを見ているだけです。NSAttributedStringを使用して複数のフォント属性を設定することは可能ですか

NSMutableAttributedString *attString=[[NSMutableAttributedString alloc] initWithString:title]; 
    NSInteger _stringLength=[descriptionText length]; 
    [attString addAttribute:NSFontAttributeName 
         value:[UIFont fontWithName:@"Gotham-Bold" size:20.0] 
         range:NSMakeRange(0, 10)]; 
    [attString addAttribute:NSFontAttributeName 
         value:[UIFont fontWithName:@"Helvetica-Bold" size:12.0] 
         range:NSMakeRange(11, _stringLength-1)]; 
    [self.description setAttributedText:attString]; 
+0

あなたがinittingしている具体的な理由があります'title'であなたの文字列が、あなたはあなたです'descriptionText'の長さを歌いますか? –

+0

これらは互換性がありますが、どちらか一方を使用する必要があります。メソッドにdescriptionTextを渡します。ローカルメソッド変数はtitleです。 – propstm

答えて

0

何かを得ることができ、このサイトや動画を見てください。おそらくあなたは存在しないフォント名を使用しようとしています。フォントが実際に存在することを確認しましたか? poまたはNSLogによって?

attributedStringをログに記録すると、どのような出力が表示されますか?

0

あなたのコードと間違って何もありません便利

Rich text

6

この問題もありました。 2番目のフォントを選択するには、文字列の長さにマイナスを設定し、開始位置と同じにする必要があります。

[attString addAttribute:NSFontAttributeName 
        value:[UIFont fontWithName:@"Helvetica-Bold" size:12.0] 
        range:NSMakeRange(11, _stringLength-11)]; 

いうより:

[attString addAttribute:NSFontAttributeName 
        value:[UIFont fontWithName:@"Helvetica-Bold" size:12.0] 
        range:NSMakeRange(11, _stringLength-1)]; 
1

私の2セント;)スウィフト3

func attributedTexts(text1: String, attribs1: [String : Any]?, text2: String, attribs2: [String : Any]?) { 

    let str = NSMutableAttributedString(string: text1, attributes: attribs1); 
    str.append(NSAttributedString(string: text2, attributes: attribs2)) 

    return str 
} 

用途:

let attr1 = [NSFontAttributeName: UIFont.boldSystemFont(ofSize: 24)] 
let attr2 = [NSFontAttributeName: UIFont.systemFont(ofSize: 16)] 
let attributedString = self.attributedTexts(text1: "First Text", attribs1: attr1, text2: "\nSecond Text", attribs2: attr2) 
関連する問題