我有一个UITableView,当然我使用了一些UITableViewCells。现在有些单元格有一个图标/图像,我想在文本前面显示,而另一些则没有。我没有在Interface Builder中创建UITableViewCells,只使用默认的东西:
//自定义表格视图单元格的外观。 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Set up the cell...
switch (indexPath.row) {
case 0:
cell.textLabel.text = @"Nearby";
cell.imageView.image = [UIImage imageNamed:@"marker.png"];
break;
case 1:
cell.textLabel.text = @"Bookmarked";
cell.imageView.image = [UIImage imageNamed:@"bookmark.png"];
break;
case 2:
cell.textLabel.text = @"Other";
break;
default:
break;
}
return cell;
}
这似乎工作得很好,但我对cell.imageView的宽度有一点问题。我正在使用的图标似乎有不同的宽度。有些是21像素,有些是25像素,在某些演员表中我根本没有图标。
这导致textLabel的文本出现在不同的位置(取决于imageView的宽度)。
现在我的问题是,我可以添加一些代码/语句,以确保我的单元格的imageView总是30像素宽吗?即使该图像没有图像吗?
这可以以编程方式完成,还是必须在InterfaceBuilder中创建自定义单元格,甚至创建自己的UITableViewCell后代。
欢迎提供有关此主题的任何信息。
此致
斯特凡
答案 0 :(得分:1)
表格单元格中的imageView属性是只读的,但是,imageView的属性与通常一样,因此您可以通过它的框架属性来操纵它的宽度。
我几乎可以肯定,设置一个空的imageView的宽度是没有用的。我相信如果imageView不包含图像,表格单元格不会将其添加为子视图...
在没有图像的单元格上,您可以尝试设置textLabel的框架,使其原点是图像存在时其他textLabel的位置?请记住,如果这样做,您还必须缩短textLabels宽度。
答案 1 :(得分:0)
稍微容易但更黑客的方式:
1)确保您的图像宽度相同。使用像Acorn这样的图像编辑器来填充透明区域的图像。
2)制作透明的.png 30(或其他)像素宽。将其设置为没有图标的行上的图像。
3)没有第三步!