2

我希望有一个带有一些标签的表格,然后在标签之后添加一个文本字段 UI。我希望标签具有某个固定大小(例如 150),并且单元格宽度的其余部分由文本字段占据。

因此我在函数中设置了我的 cell.textLabel 的框架

cellForRowAtIndexPath

这样

[cell.textLabel setFrame:CGRectMake(cell.textLabel.frame.origin.x, cell.textLabel.frame.origin.y, 150, cell.textLabel.frame.size.height)];

但这似乎不起作用。

任何想法为什么以及我的解决方案是什么?

4

2 回答 2

3

你为什么不在你的手机上添加自定义标签......

UILabel *mylabel = [[UILabel alloc] initWithFrame:CGRectMake(5,5, 150, 40)];
[cell.contentView addSubview:mylabel];

否则你需要覆盖 -LayoutSubViews方法并且必须继承UITableViewCell..

于 2013-05-17T10:52:18.330 回答
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 会做一些自己的调整,这可能是导致您的问题的原因。

于 2013-05-17T11:07:04.023 回答