文本视图xcode中的文本编辑

时间:2013-02-01 07:13:22

标签: ios objective-c xcode uitextview uifont

我有一个文本视图,其中的文本显示如下:

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

提前致谢!!

3 个答案:

答案 0 :(得分:4)

来自UITextView class reference

  

在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;

这两个例子都会导致:

Output