我有一行文本需要在 UITableViewCell 中显示。文本由来自数据库的多个部分组成。每个部分都有不同的颜色。例如:
Lorem ipsum dolar sat amet
每个项目都来自数据库并且是不同的颜色。
我正在尝试设置五个 UITextFields(每个一个。)
到现在为止还挺好。
如何使它看起来像一个字符串以确保字间距相同。
我有一行文本需要在 UITableViewCell 中显示。文本由来自数据库的多个部分组成。每个部分都有不同的颜色。例如:
Lorem ipsum dolar sat amet
每个项目都来自数据库并且是不同的颜色。
我正在尝试设置五个 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
}