2013-02-01 272 views
-1

我具有其中文本被顯示這樣的文本視圖:文本編輯

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

它看起來像相同的要求。 http://stackoverflow.com/questions/2183275/how-to-give-background-color-for-selected-text-in-text-view – Madhu

回答

4

UITextView class reference

在iOS 6中,後來,這個類支持通過 使用attributedText屬性的多個文本樣式。 (在 早期版本的iOS中不支持樣式文本。)爲此屬性設置值會導致 文本視圖使用屬性 字符串中提供的樣式信息。您仍然可以使用字體,textColor和textAlignment屬性來設置樣式屬性,但這些屬性適用於文本視圖中文本的所有 。

該課程不支持多種文本樣式。您指定的字體,顏色, 和文本對齊屬性始終適用於文本視圖的整個 內容。要在您的 應用程序中顯示更復雜的樣式,您需要使用UIWebView對象並使用HTML呈現您的 內容。

因此,您不能在iOS 5或更低版本的同一頁上擁有兩個,因爲它不受支持。只需使用一個webview和一個HTML文件。對於iOS6,也許你可以嘗試使用UITextView的attributedText屬性。這是在iOS 6下可用。但從來沒有嘗試過。或者有2個不同的UITextView(它的醜陋,但多數民衆贊成它是什麼)。

+0

如果我走的,而不是UITextView中的UILabel,那我該怎麼做這個? – user1845209

+0

你的代碼的哪部分是靜態的?問題是靜態的嗎?或回答靜態?如果它們中的任何一個是靜態的,那麼你可以使用UILabel來代替它們。它們也更適合你的內存管理。 –

0

我猜你想創建一個聊天室的應用程序?

如果是這樣,我建議讓它成爲一個UITableView。然後讓不同的單元格匹配不同的樣式。

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

+0

如果我只有一個字符串中的文本說para1呢?實際上這個數據來自tableview的textLabel,它包含問題和答案。 – user1845209

+0

您可以使用單個屬性字符串實現相同的結果,但必須使用方法:-addAttributes:range :.我會更新我的答案以顯示兩種方法。 –

+0

我假設你將要使用的字符串是自由格式的,所以我修改了我的答案,以查找字符串中最後一行的範圍,並將藍色屬性應用到該行。讓我知道你的想法。 –