gpt4 book ai didi

ios - 如何将 UITableCellView 中的 imageView 属性设置为仅显示背景颜色?

转载 作者:行者123 更新时间:2023-11-28 23:04:02 24 4
gpt4 key购买 nike

我有一个继承自 UITableViewCell 类的自定义类,它显示图像(标题左侧)或如果图像不可用则显示通用深色方 block )。以下代码在浅色单元格背景上显示了一个深色方 block :

imageView = [[UIImageView alloc] initWithFrame:CGRectMake(11, 6, 40, 40)];
[imageView setBackgroundColor:kBackgroundGreyColour];
[cell.contentView addSubview:imageView];

但是,与其在每个表格单元格中创建自定义 subview ,我更愿意使用通用 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 属性设置为与第一个代码片段中创建的 UIImageView 实例相同的值,而第二个代码片段不显示任何黑色方 block 。它根本不显示任何内容,单元格看起来只有浅色背景,没有可见的 ImageView 。但是我看到 imageView 属性不是 nil,所以执行第二个片段中的所有这些代码行应该会显示一些东西?

但是,只要我将新图像分配给 imageView 属性(例如 self.imageView.image = [[UIImage alloc] init...],方 block 就会毫无问题地显示分配的图像。

编辑:请注意,在第二种情况下,我在 layoutSubview 函数中设置 imageView 的框架,例如:

-(void)layoutSubviews
{
[super layoutSubviews];
self.imageView.frame = CGRectMake(11, 6, 40, 40);
}

所以我的问题是:1. 我需要设置现有 imageView 属性的哪些属性以及设置哪些值,以便代码显示一个填充特定颜色的正方形(就像第一段代码那样)?

  1. 有没有办法以编程方式创建 UIImage,以便它只显示背景颜色而没有任何与之关联的图像(我可以使用它来将 imageView.image 属性设置为显示那个颜色)。

  2. 是否可以在不添加自定义 subview 的情况下将 UITableViewCell 类中现有的 imageView 属性替换为自定义 View (就像第一个代码片段所做的那样),以便我可以显示当图像不可用时,占位符 UIView 具有背景颜色?

最佳答案

如您所料,您的代码不起作用的原因;因为当您设置 ImageView 的背景颜色时,它不会在图像属性上创建任何内容。
而且,您已经发现您也不能直接设置单元格的 imageview 属性。

我会说你最好的选择是前一种选择;以编程方式创建 UIImage。虽然,我强烈建议您只在您最喜欢的图像编辑软件中创建一个,然后将其包含在 bundle 中。它便于以后轻松替换,因为当您可以获得更好的图像时,几乎不需要代码和精力来替换。

但是,如果您仍然希望以编程方式完成所有操作,那么它并不像您希望的那么简单。

CGRect rect = CGRectMake(11, 6, 40, 40);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, [kBackgroundGreyColour CGColor]);
CGContextFillRect(context, rect);

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

self.imageview.image = image;

应该可以解决问题。
这定义了图像大小,创建图形上下文(将其视为 Canvas ),选择要使用的灰色,用它绘制 Canvas ,然后将其扫描到您的计算机中,变成您想要的小尺寸。

小绿鬼在屏幕后面做这一切(抱歉,Terry Pratchett 太多了)。

关于ios - 如何将 UITableCellView 中的 imageView 属性设置为仅显示背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9566333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com