【发布时间】:2014-02-20 13:38:25
【问题描述】:
tableViewCell中标签的边框不能在ableView:cellForRowAtIndexPath:方法中设置。事实上,如NSLog 所示,标签的框架已更改,但未显示在视图中。 我希望标签(绿色背景)应该比图片中的要高,这样可以显示其中的所有文字。 Prototype Cell 和 Identifier “单元格”是在 storyboard 中创建的。任何帮助将不胜感激。
ps:Xcode 5.0.2、iOS7
- (void)viewDidLoad
{
[super viewDidLoad];
NSString * str = @"Do any additional setup after loading the view, typically from a nib Do any additional setup after loading the view, typically from a nib Do any additional setup after loading the view, typically from a nib";
NSArray *array = [NSArray arrayWithObjects:str, str, str , str, str, str, nil];
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
NSInteger row = indexPath.row;
CGSize sizeConstraint = CGSizeMake(tableView.frame.size.width, 2000);
CGSize size = [[array objectAtIndex:row] boundingRectWithSize:sizeConstraint options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: [UIFont fontWithName:FontName size:FontSize]} context:nil].size;
return size.height + 20;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSInteger row = indexPath.row;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
UILabel *label = (UILabel *)[cell.contentView viewWithTag:1];
label.autoresizingMask = UIViewAutoresizingNone;
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordWrapping;
label.font = [UIFont fontWithName:FontName size:FontSize];
label.backgroundColor = [UIColor greenColor];
label.text = [array objectAtIndex:row];
CGSize sizeConstraint = CGSizeMake(tableView.frame.size.width, 2000);
CGSize size = [label.text boundingRectWithSize:sizeConstraint options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: label.font} context:nil].size;
CGRect rect = label.frame;
rect.size.height = size.height;
[label setFrame:rect];
NSLog(@"label height :%f", label.frame.size.height);
[label sizeThatFits:sizeConstraint];
return cell;
}
当您滚动tableView 时,您可以看到第一个和第二个单元格中的标签现在显示良好。 (这里我只是滚动出两个单元格并将它们拉回来。)
【问题讨论】:
-
@iDev 然后就可以清楚的看到tableview的分隔线了
-
设置绑定而不是框架
-
设置框架后为什么要使用
[label sizeThatFits:sizeConstraint];? -
@NicolasBonnet 我试过解决问题,但没有用。
-
@CoolMonster 好像不行。
标签: ios uitableview ios7 uilabel