所以,我有一个自定义的单元类,在实现中我有这个代码:
- (void)layoutSubviews {
[super layoutSubviews];
CGRect contentRect = self.contentView.bounds;
CGFloat boundsX = contentRect.origin.x;
CGRect frame;
frame = CGRectMake(boundsX+10,10, 50, 50);
picture.frame = frame;
frame = CGRectMake(boundsX+75 ,0, 170, 50);
nameLabel.frame = frame;
frame = CGRectMake(boundsX+75 ,43, 225, 23);
costLabel.frame = frame;
frame = CGRectMake(boundsX+280, 30, 8, 13);
arrow.frame = frame;
}
现在让我们看看这个布局如何在下图中工作:
我对结果感到满意,但我也想根据 nameLabel 更改单元格中的 costLabel 位置。如果 nameLabel 中有两个lines
文本,我不想更改costLabel位置,但是如果line文本> nameLabel ,我想移动 costLabel 更高,所以我可以摆脱空间,让 costLabel 更接近 nameLabel 。< / p>
我在 cellForRowAtIndexPath :
中尝试了这个CGRect frame = cell.costLabel.frame;
frame.origin.y = frame.origin.y-10; // new y coordinate
cell.costLabel.frame = frame;
但它没有用。
任何解决方案或想法,我如何更改CGRect
坐标(y origin)?
答案 0 :(得分:2)
layoutSubviews将在想要绘制单元格时调用。在layoutSubviews中更改框架(即
if (thereIsOnlyOneLineInThisCell) {
frame = CGRectMake(boundsX+75 ,43 -10, 225, 23);
} else {
frame = CGRectMake(boundsX+75 ,43, 225, 23);
}
costLabel.frame = frame;
答案 1 :(得分:1)