无法更改UITableviewCell子类中的子视图位置

时间:2014-09-24 16:29:36

标签: uitableview ios8 cell

我有一张桌子。表有1个简单的自定义单元格。此单元格中只有标签。 这是cellForRow函数的代码:

MyCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

cell.myLabel.text = [NSString stringWithFormat:@"%ld", (long)indexPath.row];
cell.myLabel.frame = CGRectOffset(cell.myLabel.frame, 0, -20);
cell.myLabel.backgroundColor = [UIColor redColor];

return cell;

除此之外一切正常:

cell.myLabel.frame = CGRectOffset(cell.myLabel.frame, 0, -20);

标签不想动! 我在iOS8中发现了这个问题。

任何人请帮助:)

2 个答案:

答案 0 :(得分:5)

好的,我在这里找到了答案https://stackoverflow.com/a/13539782/1928161:)

诀窍是添加

cell.myLabel.translatesAutoresizingMaskIntoConstraints=YES;

答案 1 :(得分:0)

MyCell.m 文件中添加 layoutSubviews 方法并更改 myLabel框架

- (void )layoutSubviews {
// always try to set frame in layoutSubviews
[super layoutSubviews];
self.myLabel.frame = CGRectOffset(self.myLabel.frame, 0, -20);
 }

请修改您的代码

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

 static NSString *cellIdentifier;
 cellIdentifier = @"Cell";

MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (cell == nil) {
  cell = [[MyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
  cell.myLabel.backgroundColor = [UIColor redColor];
}
cell.myLabel.text = [NSString stringWithFormat:@"%ld", (long)indexPath.row];

return cell;

}