2013-07-26 32 views
0

我有一行文本需要在UITableViewCell中顯示。文本由來自數據庫的多個部分組成。每個部分都有不同的顏色。 E.g:如何在iOS中將多段文本設置爲單個句子?

Lorem存有DOLAR坐阿梅德

每個項目來自數據庫,併爲不同的顏色。

我試圖建立5個UITextFields(每個)

到目前爲止好。

如何讓它看起來像單個字符串以確保字間間距相同。

+1

有你看了[NSMutableAttributedString類引用(https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/類/ NSMutableAttributedString_Class /參考/的reference.html)?您可以逐個構建完整的字符串,爲每個部分添加所需的顏色屬性。 –

回答

2

提到隨着NSMutableAttributedString,你可以做到這一點,像這樣:

NSArray *words = @[@"Lorem ", @"ipsum ", @"do", @"lar si", @"t amet"]; 
NSArray *colors = @[[UIColor blueColor], [UIColor greenColor], [UIColor yellowColor], [UIColor redColor], [UIColor blackColor]]; 

// Concatenate the list of words 
NSMutableString *string = [NSMutableString string]; 
for (NSString *word in words) 
    [string appendString: word]; 

// Add the coloring attributes 
NSMutableAttributedString *attrString = [[[NSMutableAttributedString alloc] initWithString: string] autorelease]; 

int location = 0; 

for (int i = 0; i < words.count; i++) { 

    NSString *s = [words objectAtIndex: i]; 

    [attrString addAttribute: NSForegroundColorAttributeName 
         value: [colors objectAtIndex: i] 
         range: NSMakeRange(location, s.length)]; 

    location += s.length; 
} 


UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(20, 20, 280, 21)]; 
[label setAttributedText: attrString]; 
[self.view addSubview: label]; 
[label release]; 
1

您可以通過測量與文本與

  • UIWebView的帶格式的HTML文本
  • 的UILabel做到這一點[NSString的sizeWithFont:]和位置和尺寸的標籤(也用的UITextField去考慮填充)
  • NSMutableAttributedString由賈森·巴克
1

設置文本字段後,您可以使用該方法

[yourTextField sizeToFit]; 

這將使文本框包圍字的長度。

之後,您可以將這些文本字段一個接一個地放置,以便在兩者之間留出足夠的空間以使其看起來像普通句子。

將UITextFields放置在NSArray中(按順序)。

在的cellForRowAtIndexPath委託方法 -

int x = 0; //or wherever you want the string to start from 

for (UITextField *textField in arrTextFields) 
{ 
    textField.frame = CGRectOffset(textField.bounds, x, 0); 
    [cell addSubview:textField]; 
    x += textField.frame.size.width + 2; //Adjust the constant to set spacing 
} 
相關問題