我有一个Grouped格式的UITableView
,里面有几个单元格。在单元格中是UIView
我要添加另一个UIView
。当我更新第一个UIView
的框架时,它不会更改它的位置或尺寸。
如果单元格在屏幕外再次出现在屏幕上,UIViews
会自动重新对齐,因此正在应用实际转换,这只是重新渲染没有正确发生。
这个代码就在我的cellForRowAtIndexPath
:
[cell.cellMoney setBackgroundColor:[UIColor clearColor]];
[cell.cellMoney.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
UIView *sellMoneySubView = [UIMoneyDisplay createViewWithAmount:item.min_sale_unit_price fontSize:17.0];
[cell.cellMoney setFrame:CGRectMake(cell.frame.size.width-sellMoneySubView.frame.size.width-20, 7, sellMoneySubView.frame.size.width, sellMoneySubView.frame.size.height)];
[cell.cellMoney addSubview:sellMoneySubView];
[cell setNeedsLayout];
我添加到第一个UIView
的子UIView
会被添加并正确呈现,它只是第一个已经消失的定位怪异。
哦,我也在故事板上使用AutoLayout。
补充:我修复了部分问题,但标题仍然有效。我还有一个需要通过网络下载图像的单元格,但该单元格也不响应任何形式的布局调用。
我通过移除中间视图并直接添加到单元格UIView
来解决问题与contentView
的位置。
答案 0 :(得分:1)
而不是这个
[cell setNeedsLayout]
使用[cell layoutIfNeeded]
[cell.cellMoney setBackgroundColor:[UIColor clearColor]];
[cell.cellMoney.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
UIView *sellMoneySubView = [UIMoneyDisplay createViewWithAmount:item.min_sale_unit_price fontSize:17.0];
[cell.cellMoney setFrame:CGRectMake(cell.frame.size.width-sellMoneySubView.frame.size.width-20, 7, sellMoneySubView.frame.size.width, sellMoneySubView.frame.size.height)];
[cell.cellMoney addSubview:sellMoneySubView];
[cell layoutIfNeeded]; //use this
return cell;
这可能对您有所帮助:)。