NSAttributedString
は本当に私には理解できない。
UILabel
にさまざまなサイズのテキストを設定し、NSAttributedString
を使用する方法を収集したいのですが、これに関するドキュメントがどこにもありません。
誰かが私に具体的な例を手伝ってくれるなら、私はそれが大好きです。
たとえば、私が望んでいたテキストは次のとおりだとしましょう:
(in small letters:) "Presenting The Great..."
(in huge letters:) "HULK HOGAN!"
誰かがそれを行う方法を教えてもらえますか?それとも、私が自分で学ぶことができる単純でシンプルなリファレンスですか?私はドキュメントを通して、そしてStack Overflowの他の例を通してでさえ、これを理解しようとしたと断言しますが、私はそれを理解していません。
このようなことをするでしょう…
NSMutableAttributedString *hogan = [[NSMutableAttributedString alloc] initWithString:@"Presenting the great... Hulk Hogan!"];
[hogan addAttribute:NSFontAttributeName
value:[UIFont systemFontOfSize:20.0]
range:NSMakeRange(24, 11)];
これにより、20ポイントのテキストで最後の2つの単語が設定されます。文字列の残りはデフォルト値を使用します(これは12ポイントだと思います)。テキストサイズの設定について混乱する可能性があるのは、書体andサイズを同時に設定する必要があることです。各UIFont
オブジェクトは、これら両方のプロパティをカプセル化します。
Swift 3ソリューション
また、ObjCまたはSwiftでインデックスを指定する代わりに、append
関数を使用できます。
let attrString = NSMutableAttributedString(string: "Presenting The Great...",
attributes: [ NSFontAttributeName: UIFont.systemFont(ofSize: 20) ])
attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 40) ]))
Swift 4ソリューション:
let attrString = NSMutableAttributedString(string: "Presenting The Great...",
attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 18)]);
attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 36)]));
Swift 4.2ソリューション:
let attrString = NSMutableAttributedString(string: "Presenting The Great...",
attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 18)])
attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 36)]))
簡単な方法でやりたい場合は、NSAttributedStringのカテゴリを提供する OHAttributedLabel というgitリポジトリがあります。次のようなことができます:
NSMutableAttributedString *mystring = [[NSMutableAttributedString alloc] initWithString:@"My String"];
[mystring setTextColor:[UIColor colorWithRGB:78 green:111 blue:32 alpha:1]];
mystring.font = [UIFont systemFontOfSize:14];
サードパーティのライブラリを使用したくない場合は、 このリンク を参照して、属性付き文字列の使用方法に関する適切なチュートリアルを確認してください。