是否可以在 UITableViewCell 内的 UIImageView 上设置固定宽度?

Posted

技术标签:

【中文标题】是否可以在 UITableViewCell 内的 UIImageView 上设置固定宽度?【英文标题】:Is it possible to set a fixed width on the UIImageView inside a UITableViewCell? 【发布时间】:2010-02-11 09:01:53 【问题描述】:

我有一个 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 像素宽吗?即使该 imageView 没有图像?

这可以通过编程方式完成,还是我必须在 InterfaceBuilder 中创建一个自定义单元格,甚至创建我自己的 UITableViewCell 后代。

欢迎提供有关此主题的任何信息。

问候,

史蒂芬

【问题讨论】:

【参考方案1】:

表格单元格中的 imageView 属性是只读的,但是,imageView 的属性与通常一样,因此您可以通过它的 frame 属性来操作它的宽度。

我几乎可以肯定,设置一个空的 imageView 的宽度不会有帮助。我相信如果 imageView 不包含图像,表格单元格不会将其添加为子视图...

在没有图像的单元格上,您可以尝试设置 textLabel 的框架,以便它的原点是其他 textLabel 的位置(如果存在图像)?请记住,如果这样做,您也必须缩短 textLabels 的宽度。

【讨论】:

【参考方案2】:

一种更简单但更简单的方法:

1) 确保您的图片具有相同的宽度。使用像 Acorn 这样的图像编辑器用透明区域填充图像。

2) 制作一个 30(或其他)像素宽的透明 .png。将此设置为没有图标的行上的图像。

3) 没有第三步!

【讨论】:

嗨,A其实也考虑过这个问题。如果图像的大小相同,那会让我的生活更轻松。 很快做了一个测试。将我的图标大小调整为 30x30,问题解决了 :-) 可能想要选择一个稍微小一点的图标大小,可能 28 x 28 也可以。感谢您的提示。

以上是关于是否可以在 UITableViewCell 内的 UIImageView 上设置固定宽度?的主要内容,如果未能解决你的问题,请参考以下文章

除非滚动表格,否则 UITableViewCell 内的 UIView 调整大小不显示

UITableViewCell 内的 UIStackView

为 uitableviewcell 内的视图设置动画

UITableViewCell 内的 UITextField 不会在 iPad 上激活,但在 iPhone 上有效

UITableViewCell 内的 UIImageViews 不会被选中

Firestore - UITableViewCell 内的 UISlider