我有一行需要在UITableViewCell中显示的文本。该文本由来自数据库的多个部分组成。每个部分都有不同的颜色。 E.g:
Lorem ipsum dolar坐下来
每个项目都来自数据库,颜色不同。
我正在尝试设置五个UITextField(每个一个。)
到目前为止一切顺利。
如何使其看起来像单个字符串,以确保字间间隔相同。
答案 0 :(得分: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 :(得分:1)
您可以使用
执行此操作答案 2 :(得分:1)
设置文本字段后,您可以使用方法
[yourTextField sizeToFit];
这将使文本字段包含单词的长度。
之后,你可以一个接一个地放置这些文本字段,在它们之间留出足够的空间,看起来像一个普通的句子。
将UITextField放在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
}