0

私は iOS アプリケーションを実装しており、2 つの文字列を連結してラベルに挿入しています。最初の文字列に 2 番目の文字列とは異なる色を付けたい。

ここに私の文字列があり、それらは連結されています...

NSString *dateVale=[date objectAtIndex:indexPath.row];
NSString *addressValue=[アドレス objectAtIndex:indexPath.row];

TextLabel.text = [NSString stringWithFormat:@"%@ \n%@",dateVale,addressValue];

では、最初の文字列を青色にする方法は?

前もって感謝します。

4

3 に答える 3

3

行く方法は、NSAttributedStrings を使用することです。NSAttributedString オブジェクトは、関連付けられた一連の属性を持つ文字列を表します。iOS6 UIKit から、UILabels およびその他のコンポーネントで NSAttributedStrings のサポートが追加されました。

以前の iOS バージョンでは、 OHAttributedLabelTTTAttributedLabelNimbus Attributed Labelなどの NSAttributedStrings をサポートするサードパーティ コンポーネントを使用できます。これらのコンポーネントは、iOS でのテキスト レンダリング用の低レベル フレームワークである CoreText を使用して実装されます。CoreText を使用する代わりに、これらのコンポーネントのいずれかを使用することをお勧めします。

より複雑なスタイルや動作が必要な場合は、UIWebView を使用することもできますが、より重いアプローチになります。

于 2012-08-24T10:48:58.543 に答える
1

6.0 未満の iOS では、サードパーティ クラスを使用しない限り、リクエストはサポートされません。個人的にはサード パーティのクラスを避けるようにしています。これは、今後の iOS の更新で、これらのサード パーティのクラスの一部が Apple によって承認されなくなることが何度もあるからです。しかし、出力文字列で、各テキストが別々の行にあることに気付きました (から\n):

TextLabel.text = [NSString stringWithFormat:@"%@ \n%@",dateVale,addressValue];

1 行に 1 つずつあり、サード パーティのクラスを使用したくない場合は、単純に 2 つUILabelの を使用して、それぞれに必要な書式を設定できます。その場合は、次のようにします。

TextLabel01.text = [NSString stringWithFormat:@"%@", dateVale];
TextLabel02.text = [NSString stringWithFormat:@"%@", addressValue];

ちなみに、それらが同じ行にあったとしても、2 つの別々UILabelの を使用することができ、frameを使用してテキスト幅を計算することにより、各ラベルを動的に操作できますsizeWithFont

于 2012-08-24T11:32:58.170 に答える
0

NSAttributedStringを使用します。条件は、属性付きラベル、つまりTTTAttributedLabelにサードパーティクラスを使用する必要があることです。

編集

TTTAttributedLabelは、iOS5.1バージョン以降と互換性があります。

iOS6のUILabelはNSAttributedStringをサポートしているため、サードパーティのクラスラベルを使用する必要はありません。

于 2012-08-24T10:39:39.633 に答える