【问题标题】:Is it possible to set a fixed width on the UIImageView inside a UITableViewCell?是否可以在 UITableViewCell 内的 UIImageView 上设置固定宽度?
【发布时间】: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 后代。

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

问候,

史蒂芬

【问题讨论】:

    标签: iphone uitableview uiimageview width


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      3) 没有第三步!

      【讨论】:

      • 嗨,A其实也考虑过这个问题。如果图像的大小相同,那会让我的生活更轻松。
      • 很快做了一个测试。将我的图标大小调整为 30x30,问题解决了 :-) 可能想要选择一个稍微小一点的图标大小,可能 28 x 28 也可以。感谢您的提示。
      猜你喜欢
      • 2015-06-09
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 2015-12-18
      • 2021-12-09
      • 2014-10-14
      • 1970-01-01
      相关资源
      最近更新 更多