-2

テキストが次のように表示されるテキストビューがあります。

how are you?

Fine

ここで、テキストビューのフォントを設定すると、2行(質問と回答)に同じフォントが表示されますが、質問を1つのフォントで表示し、回答を別のフォントで表示したいと思います。これどうやってするの?

私はこのようにフォントを設定しました:

textView = [[UITextView alloc]initWithFrame:CGRectMake(10, 80, 300, 440)];
textView.layer.borderColor = [UIColor blackColor].CGColor;
[textView setFont:[UIFont fontWithName:@"TimesNewRomanPS-ItalicMT" size:14]];
textView.layer.borderWidth = 1.0;
    textView.autoresizesSubviews = YES;
    textView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view addSubview:textView];

前もって感謝します!!

4

3 に答える 3

4

UITextView クラス リファレンスから:

iOS 6 以降では、このクラスは attributedText プロパティを使用して複数のテキスト スタイルをサポートします。(スタイル付きテキストは、以前のバージョンの iOS ではサポートされていません。) このプロパティに値を設定すると、属性付き文字列で提供されるスタイル情報がテキスト ビューで使用されます。font、textColor、および textAlignment プロパティを使用してスタイル属性を設定することはできますが、これらのプロパティはテキスト ビュー内のすべてのテキストに適用されます。

このクラスは、テキストの複数のスタイルをサポートしていません。指定したフォント、色、およびテキスト配置の属性は、常にテキスト ビューのコンテンツ全体に適用されます。アプリケーションでより複雑なスタイルを表示するには、UIWebView オブジェクトを使用し、HTML を使用してコンテンツをレンダリングする必要があります。

したがって、iOS 5 以下ではサポートされていないため、同じページに 2 つを表示することはできません。Webview と HTML ファイルを使用するだけです。iOS6 の場合は、UITextView のプロパティを使用してみてくださいattributedText。これは iOS 6 で利用できます。ただし、試したことはありません。

または、2つの異なるUITextViewがあります(醜いですが、それはそれです)。

于 2013-02-01T07:15:41.743 に答える
0

属性付き文字列を使用して、これを実現できます。たとえば、次のようになります。

NSMutableAttributedString *para1 = [[NSMutableAttributedString alloc] initWithString:@"How are you?"];
NSMutableAttributedString *para2 = [[NSMutableAttributedString alloc] initWithString:@"\nFine"];
[para2 setAttributes:@{ NSForegroundColorAttributeName : [UIColor blueColor]}  range:NSMakeRange(0, para2.length)];
[para1 insertAttributedString:para2 atIndex:para1.length];

self.textLabel.attributedText = para1;

または、単一の属性付き文字列を使用:

NSMutableAttributedString *para1 = [[NSMutableAttributedString alloc] initWithString:@"How are you?\nFine"];

// Get the range of the last line in the string
__block NSRange range;
[para1.mutableString enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) {
    range = [para1.mutableString rangeOfString:line];
}];

[para1 setAttributes:@{ NSForegroundColorAttributeName : [UIColor blueColor] } range:range];

self.textLabel.attributedText = para1;

どちらの例も次のようになります。

出力

于 2013-02-01T07:43:27.280 に答える
0

チャットルームのようなアプリを作りたかったのでしょう。

もしそうなら、UITableViewにすることをお勧めします。そして、異なるスタイルに合わせて異なるセルを作成します。

于 2013-02-01T07:28:08.950 に答える