我有一行文本需要在UITableViewCell中顯示。文本由來自數據庫的多個部分組成。每個部分都有不同的顏色。 E.g:如何在iOS中將多段文本設置爲單個句子?
Lorem存有DOLAR坐阿梅德
每個項目來自數據庫,併爲不同的顏色。
我試圖建立5個UITextFields(每個)
到目前爲止好。
如何讓它看起來像單個字符串以確保字間間距相同。
我有一行文本需要在UITableViewCell中顯示。文本由來自數據庫的多個部分組成。每個部分都有不同的顏色。 E.g:如何在iOS中將多段文本設置爲單個句子?
Lorem存有DOLAR坐阿梅德
每個項目來自數據庫,併爲不同的顏色。
我試圖建立5個UITextFields(每個)
到目前爲止好。
如何讓它看起來像單個字符串以確保字間間距相同。
提到隨着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];
您可以通過測量與文本與
設置文本字段後,您可以使用該方法
[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
}
有你看了[NSMutableAttributedString類引用(https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/類/ NSMutableAttributedString_Class /參考/的reference.html)?您可以逐個構建完整的字符串,爲每個部分添加所需的顏色屬性。 –