2013-01-11 61 views
0

我在我的iPad应用程序中有一个分组的tableView,并且我一直试图设置cell.imageView.center = cell.center来将图像居中,而不是将它放到最左边的位置。如果没有UITableviewCell的子类,这显然是不可能的(如果有人可以解释为什么,那也会被赞赏。现在,我只是假设它们是Java开发人员称之为“私有”变量)。 所以,我创建了一个自定义的tableViewCell,但我只想在这个tableView的其中一行中使用这个单元格。因此,在cellForRowAtIndexPath我基本上写如何正确添加自定义TableViewCell?

cell = [[UITableViewCell alloc]initWith//blahblah 

if(indexPath.row == 0) 
    cell = [[CustomCell alloc]initWith//blahblah 

这当然不完全是我写的东西,但是这是它的想法。

现在,当我做到这一点,它的工作原理,但在这个GROUPED的tableView第一小区原来比他们的更广泛的休息,没有我做的自定义单元格什么。 customCell类尚未更改。它仍然有圆角,所以它似乎知道它是一个分组tableView。

而且,我一直在努力通过编程获得一个单元的大小,在cellForRowAtIndexPath,我已经试过退出cell.frame.size.widthcell.contentView.frame.size.width,他们都返回320,当我知道他们有很多更广泛的。像,所有的行大约400宽,第一个单元格是420或什么的。它仍然写出320所有单元..

回答

0

此代码不会为一对夫妇的原因有:

cell.imageView.center = cell.center; 

首先,该中心是相对于它的父。我相信单元格superview是tableView。 imageView的超级视图将成为单元格的内容视图。因此坐标系不同,所以centen将被抵消。例如。第三个细胞向下将具有0.5宽度+3.5高度的中心。你应该能够通过这样做来解决这个问题:

cell.imageView.center = CGPointMake(width/2 , height/2); 

第二个问题与表视图的工作方式有关。表视图管理其单元格视图。单元格的宽度由表视图的宽度定义,高度由表视图的行高度属性定义。这意味着细胞本身无法控制其大小。您可以调整其子视图的大小,但是您必须在设置单元大小后执行此操作(否则您可能会得到奇怪的结果)。你可以在布局子视图(自定义UITableViewCell类)中做到这一点。 See this answer

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    self.imageView.frame = .... 
} 

layoutSubviews被称为细胞框架已定,所以在这里做的,而不是cellForRowAtIndexpath视图记录。

至于GROUPED风格。林不知道这是否旨在与自定义视图。我怀疑它将单元格的大小设置为它自己的宽度减去每个大小的20像素边距,然后将掩码应用于截面中的顶部和底部单元格以获得圆角效果。如果您使用自定义视图,请尝试使用标准的表格视图样式。

+0

所以通过设置'cell.imageView.center.x = tableView.center.x',那应该能解决我的问题吗?但它不.. – Sti

+0

你是否在layoutSubview的自定义tableviewcell的方法(不是在表视图) – Robert

+0

否,在cellForRowAtIndexPath ..居中imageView是我创建自定义tableViewCell的唯一原因,所以我我仍然试图找出如何做到这一点,而不需要实际上对细胞进行分类。 – Sti

相关问题