【发布时间】:2012-03-05 12:05:24
【问题描述】:
我有一个继承自 UITableViewCell 类的自定义类,该类显示图像(标题左侧)或通用深色方块(如果图像不可用)。以下代码在浅色单元格背景上显示了一个黑色方块:
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(11, 6, 40, 40)];
[imageView setBackgroundColor:kBackgroundGreyColour];
[cell.contentView addSubview:imageView];
但是,与其在每个表格单元格中创建自定义子视图,我更愿意使用通用 UITableViewCell 类的现有 imageView 属性并以某种方式对其进行修改以显示正方形,就像上面的代码一样。这就是我目前正在尝试的:
UIImageView* iv = [[UIImageView alloc] initWithFrame:CGRectMake(11, 6, 40, 40)];
[iv setBackgroundColor:[UIColor redColor]];
self.imageView.hidden = NO;
self.imageView.opaque = iv.opaque;
self.imageView.alpha = iv.alpha;
self.imageView.image = iv.image;
[self bringSubviewToFront:self.imageView];
[self.imageView setBackgroundColor:[UIColor redColor]];
我添加了所有这些行以将许多现有的 UIImageView 属性设置为与第一个代码 sn-p 中创建的 UIImageView 实例相同的值,但第二个代码 sn-p 不显示任何黑色方块。它根本不显示任何内容,并且单元格看起来只有浅色背景,没有可见的图像视图。但是我看到 imageView 属性不是 nil 所以在第二个 sn-p 中执行所有这些代码行应该会显示什么?
但是,一旦我将新图像分配给 imageView 属性(例如 self.imageView.image = [[UIImage alloc] init...],方块就会毫无问题地显示分配的图像。
编辑:请注意,在第二种情况下,我在 layoutSubview 函数中设置 imageView 的框架,例如:
-(void)layoutSubviews
{
[super layoutSubviews];
self.imageView.frame = CGRectMake(11, 6, 40, 40);
}
所以我的问题是: 1. 我需要设置现有 imageView 属性的哪些属性以及设置哪些值,以便代码显示一个填充了特定颜色的正方形(就像代码的第一个 sn-p 一样)?
有没有办法以编程方式创建
UIImage,以便它只显示背景颜色而没有任何与之关联的图像(我可以使用它来设置 imageView.image 属性以显示该颜色)。是否可以用自定义视图替换
UITableViewCell类中的现有 imageView 属性而不添加自定义子视图(就像第一个代码 sn-p 所做的那样),以便我可以显示占位符 UIView图片不可用时的背景颜色?
【问题讨论】:
标签: ios uitableview background uiimageview uiimage