我有一个文本视图,其中的文本显示如下:
how are you?
Fine
现在,如果我为文本视图设置字体,则显示两行(问答)的相同字体,但是我希望问题以一种字体显示并以其他字体回答。我怎么能这样做?
我设置这样的字体:
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];
提前致谢!!
答案 0 :(得分:4)
在iOS 6及更高版本中,此类支持多种文本样式 使用attributedText属性。 (不支持样式文本 早期版本的iOS。)为此属性设置值会导致 文本视图使用属性中提供的样式信息 串。您仍然可以使用font,textColor和textAlignment 用于设置样式属性的属性,但这些属性适用于所有属性 文本视图中的文本。
此类不支持多种文本样式。字体,颜色, 您指定的文本对齐属性始终适用于整个 文本视图的内容。在您的中显示更复杂的样式 应用程序,您需要使用UIWebView对象并呈现您的 使用HTML的内容。
因此,对于iOS 5或更低版本,您不能在同一页面上拥有两个,因为它不受支持。只需使用webview和HTML文件即可。对于iOS6,您可以尝试使用UITextView的attributedText
属性。这在iOS 6下可用。但从未尝试过。
或者有2个不同的UITextView(它很难看,但就是这样)。
答案 1 :(得分:0)
我猜你想创建一个类似app的聊天室吗?
如果是这样,我建议将其设为UITableView。然后制作不同的单元格以匹配不同的样式。
答案 2 :(得分: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;
这两个例子都会导致: