如何在iOS中将多段文本设置为单个句子?

时间:2013-07-26 22:15:14

标签: ios uitableview uitextfield

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

  

Lorem ipsum dolar坐下来

每个项目都来自数据库,颜色不同。

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

到目前为止一切顺利。

如何使其看起来像单个字符串,以确保字间间隔相同。

3 个答案:

答案 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)

您可以使用

执行此操作
  • 带有格式化HTML文本的UIWebView
  • UILabel通过使用[NSString sizeWithFont:]测量文本并定位和调整标签大小(考虑到填充也会使用UITextField)
  • Jason Barker提到的NSMutableAttributedString

答案 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
}