0

我有一行文本需要在 UITableViewCell 中显示。文本由来自数据库的多个部分组成。每个部分都有不同的颜色。例如:

Lorem ipsum dolar sat amet

每个项目都来自数据库并且是不同的颜色。

我正在尝试设置五个 UITextFields(每个一个。)

到现在为止还挺好。

如何使它看起来像一个字符串以确保字间距相同。

4

3 回答 3

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];
于 2013-07-26T22:41:37.707 回答
1

你可以这样做

  • 带有格式化 HTML 文本的 UIWebView
  • UILabel 通过使用 [NSString sizeWithFont:] 测量文本并定位和调整标签的大小(考虑到填充,也将与 UITextField 一起使用)
  • Jason Barker 提到的 NSMutableAttributedString
于 2013-07-26T22:28:27.510 回答
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
}
于 2013-07-26T23:11:29.937 回答