2つの異なるフォントサイズのNSAttributedStringの例?


80

NSAttributedString 私には本当に侵入できません。

UILabelさまざまなサイズのテキストを設定したいので、収集NSAttributedStringする方法がありますが、これに関するドキュメントではどこにも行きません。

誰かが具体的な例で私を助けてくれるなら、私はそれが大好きです。

たとえば、私が欲しかったテキストが次のとおりだったとしましょう。

(in small letters:) "Presenting The Great..."
(in huge letters:) "HULK HOGAN!"

誰かが私にそれをする方法を教えてもらえますか?それとも、私が自分で学ぶことができる、わかりやすくシンプルなリファレンスですか?ドキュメントを通して、そしてStack Overflowの他の例を通してさえ、これを理解しようとしたが、私はそれを理解していないことを誓う。

回答:


163

あなたはこのようなことをするでしょう…

NSMutableAttributedString *hogan = [[NSMutableAttributedString alloc] initWithString:@"Presenting the great... Hulk Hogan!"];
[hogan addAttribute:NSFontAttributeName
              value:[UIFont systemFontOfSize:20.0]
              range:NSMakeRange(24, 11)];

これにより、最後の2つの単語が20ポイントのテキストに設定されます。文字列の残りの部分はデフォルト値(12ポイントだと思います)を使用します。テキストサイズの設定で混乱する可能性があるのは、書体サイズを同時に設定する必要があることですUIFont。各オブジェクトはこれらのプロパティの両方をカプセル化します。


SWIFTの範囲については、この回答を確認してください:stackoverflow.com/a/27041376/1736679
Efren

20

Swift3ソリューション

また、appendObjCまたはSwiftでインデックスを指定する代わりに、この関数を使用できます。

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

13

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)]));

-1

簡単な方法でやりたい場合は、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];

サードパーティのライブラリを使用したくない場合は、このリンクをチェックして、属性付き文字列の使用を開始する方法に関する適切なチュートリアルを確認してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.