我的iOS应用程序出现问题,并在UITableViewCell中获取UILabel以进行换行。文本显示但它只显示在一行上。
这是我的代码:
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
UILabel *noteLabel = (UILabel *)[cell.contentView viewWithTag:2];
NSDictionary *contact = [jsonResults objectAtIndex:indexPath.row];
noteLabel.lineBreakMode = UILineBreakModeWordWrap;
noteLabel.numberOfLines = 0;
noteLabel.text = [contact objectForKey:@"note"];
return cell;
}
我认为问题与这一行有关:
UILabel *noteLabel = (UILabel *)[cell.contentView viewWithTag:2];
我不确定如何从标签中获取标签,我认为此行不会让我更改标签属性。
答案 0 :(得分:0)
您可能需要设置标签的高度:
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
UILabel *noteLabel = (UILabel *)[cell.contentView viewWithTag:2];
NSDictionary *contact = [jsonResults objectAtIndex:indexPath.row];
noteLabel.lineBreakMode = UILineBreakModeWordWrap;
noteLabel.numberOfLines = 0;
noteLabel.text = [contact objectForKey:@"note"];
//Note: adjust the proper width to be constrained to
CGSize size = [noteLabel.text sizeWithFont:noteLabel.font forWidth:150 lineBreakMode:noteLabel.lineBreakMode];
CGRect labelFrame = noteLabel.frame;
labelFrame.size = size;
noteLabel.frame = labelFrame;
return cell;
}
答案 1 :(得分:0)
自2012年以来,时间已经开始。在当前的Xcode 5世界中,如果在任一代码或Interface Builder中将numberOfLines设置为0,则会自动扩展多行的高度。如果在Interface Builder或代码中设置了AutoLayout高度约束,则可以阻止在此场景中显示多行的一件事。在这种情况下,它看起来像一个被截断的标签,但与截断的标签相反,它不会以省略号(...)结尾。
为了使AutoLayout按预期运行,您通常不希望为UILabel设置更高的高度,除非您知道UILabel总是有多行。
答案 2 :(得分:0)