如何恢复填充图像的 UITableViewCell 的圆角?

Posted

技术标签:

【中文标题】如何恢复填充图像的 UITableViewCell 的圆角?【英文标题】:How to restore rounded corners for a UITableViewCell filled with an image? 【发布时间】:2009-11-18 13:57:19 【问题描述】:

我有一个 UITableViewCell,我想使用 image 属性来填充它。当它首先出现在分组的 UITableView 中时,我希望它具有标准的圆角。

不幸的是,图像也填充了圆角。有没有办法在不使用透明图像的情况下保留它们?

【问题讨论】:

【参考方案1】:

您可以使用其 layer 属性以编程方式对任何视图的角进行圆角处理。如果您使用图层的cornerRadius 属性,您应该能够获得您想要的结果。

#include <QuartzCore/QuartzCore.h>

UIImage *myImage = [UIImage imageNamed:@"image.png"];
UIImageView *imgView = [[UIImageView alloc] initWithImage:myImage];
imgView.layer.cornerRadius = 10.0;

如果你只是想弄圆一些角落,你应该查看 UIBezierPath API 并使用路径来掩盖你的图像。这未经测试,但它应该为您指明正确的方向:

UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:cell.bounds
                                           byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight
                                                 cornerRadii:CGSizeMake(10.0, 10.0)];

CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = imageView.frame;
maskLayer.path = path;
imageView.layer.mask = maskLayer;

【讨论】:

对于第一个单元格,我只希望在右上角和左上角使用圆角,所以这并没有多大帮助。无论如何,谢谢 @johnl 我知道这已经过时了,但我已经更新了我的答案,包括一种只绕过某些角落的方法【参考方案2】:

我刚刚使我的不透明图像具有圆角。截取屏幕截图以获取圆角的尺寸,然后将其用作图像的基础。

【讨论】:

以上是关于如何恢复填充图像的 UITableViewCell 的圆角?的主要内容,如果未能解决你的问题,请参考以下文章

删除 UITableViewCell 上的填充

iOS - 在后台下载并分配给 UITableViewCell imageView 的图像未填充视图

用 JSON Base64 填充 UITableViewCell?

从 Firebase 填充数组传递 UITableViewCell 数据

iOS - UITableViewCell 图像调整/调整大小

UITableViewCell重用后加载不正确的图像