我希望有一个带有标签的表格,然后在标签后面添加一个文本字段UI。 我希望Label有一些固定的大小(比方说150),其余的单元格宽度都被文本字段占用。
因此我在函数
中设置了cell.textLabel的框架的cellForRowAtIndexPath
以这种方式
[cell.textLabel setFrame:CGRectMake(cell.textLabel.frame.origin.x, cell.textLabel.frame.origin.y, 150, cell.textLabel.frame.size.height)];
但这似乎不起作用。
任何想法为什么以及什么可以解决这个问题?
答案 0 :(得分:3)
为什么不在单元格上添加自定义标签...
UILabel *mylabel = [[UILabel alloc] initWithFrame:CGRectMake(5,5, 150, 40)];
[cell.contentView addSubview:mylabel];
否则你需要覆盖 - LayoutSubViews
方法并且必须继承UITableViewCell
..
答案 1 :(得分:1)
UITableViewCell
负责布置其子视图。您可以使用UITableViewCellStyle
枚举对其布局进行非常高级别的控制。
如果您想要自定义内容,请覆盖UITableViewCell并将视图添加到其内容视图或修改现有视图。执行此操作时,请务必使用layoutSubviews
方法进行布局,例如
- (void)layoutSubviews
{
[super layoutSubviews];
self.textLabel.frame = CGRectMake(self.textLabel.frame.origin.x,
self.textLabel.frame.origin.y,
150,
self.textLabel.frame.size.height);
}
单元格的框架在添加到UITableView时会发生变化。当单元格的框架更改时,将调用layoutSubviews,以便您有机会调整其子视图。默认情况下,UITableViewCell会做一些自己的调整,这可能会导致你的问题。