需要滚动UITableView以更新UITableViewCell内的UILabel帧

时间:2013-11-23 12:47:51

标签: ios uitableview uilabel frame

我想在UILabel内更新UITableViewCell框架(只是origin.y位置),具体取决于某个条件,因此,我使用该代码来实现这一目标:

- (void)tableView:(UITableView *)tableView willDisplayCell:(EventsCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
    if([[arrayofImages objectAtIndex:indexPath.row]isEqualToString:@"no image"]){
        [cell.imageImageView removeFromSuperview];
        cell.imageImageView=nil;
        cell.yearLabel.frame=CGRectMake(cell.yearLabel.frame.origin.x,42, cell.yearLabel.frame.size.width, cell.yearLabel.frame.size.height );
    }
}

问题是我需要滚动UITableView单元格才能更新UILabel的框架(将y位置设置为42)。 为什么即使在创建单元格之前执行此代码也存在此问题(在willDisplayCell委托方法中)。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

这可能是由于自动布局造成的。如果不是更改框架,而是将IBOutlet设置为标签和单元格顶部之间的约束,并修改其常量值,它应该正常工作(topCon是我对约束的出口)。

- (void)tableView:(UITableView *)tableView willDisplayCell:(EventsCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
    if([[arrayofImages objectAtIndex:indexPath.row]isEqualToString:@"no image"]){
        [cell.imageImageView removeFromSuperview];
        cell.imageImageView=nil;
        cell.topCon.constant = 42;
    }
}