UITableViewCell 中的屏蔽图像

Posted

技术标签:

【中文标题】UITableViewCell 中的屏蔽图像【英文标题】:Masking UIImage in TableViewCell 【发布时间】:2013-11-09 18:18:07 【问题描述】:

我有一个 UITableView,其中每个单元格都是图片、名称和按钮,就像 ios 7 中手机应用程序中的收藏夹选项卡一样。而且,就像在手机应用程序中一样,我希望每个单元格中的图像是一个圆形,而不是一个正方形。

使用一个名为 PaintCode 的程序,我生成了一个 UIBezierPath,我想将它放在 cell.imageView 上,以使图像看起来像一个圆圈。这是代码

//// Color Declarations
UIColor* fillColor = [UIColor colorWithRed: 1 green: 1 blue: 1 alpha: 0];
UIColor* fillColor2 = [UIColor colorWithRed: 1 green: 1 blue: 1 alpha: 1];

//// Bezier Drawing
UIBezierPath* bezierPath = [UIBezierPath bezierPath];
[bezierPath moveToPoint: CGPointMake(36.36, 26.36)];
[bezierPath addCurveToPoint: CGPointMake(30.5, 40.5) controlPoint1: CGPointMake(32.45, 30.26) controlPoint2: CGPointMake(30.5, 35.38)];
[bezierPath addLineToPoint: CGPointMake(30.5, 20.5)];
[bezierPath addLineToPoint: CGPointMake(50.5, 20.5)];
[bezierPath addCurveToPoint: CGPointMake(36.36, 26.36) controlPoint1: CGPointMake(45.38, 20.5) controlPoint2: CGPointMake(40.26, 22.45)];
[bezierPath closePath];
[bezierPath moveToPoint: CGPointMake(70.5, 60.5)];
[bezierPath addLineToPoint: CGPointMake(50.5, 60.5)];
[bezierPath addCurveToPoint: CGPointMake(64.64, 54.64) controlPoint1: CGPointMake(55.62, 60.5) controlPoint2: CGPointMake(60.74, 58.55)];
[bezierPath addCurveToPoint: CGPointMake(70.5, 40.5) controlPoint1: CGPointMake(68.55, 50.74) controlPoint2: CGPointMake(70.5, 45.62)];
[bezierPath addCurveToPoint: CGPointMake(64.64, 26.36) controlPoint1: CGPointMake(70.5, 35.38) controlPoint2: CGPointMake(68.55, 30.26)];
[bezierPath addCurveToPoint: CGPointMake(50.5, 20.5) controlPoint1: CGPointMake(60.74, 22.45) controlPoint2: CGPointMake(55.62, 20.5)];
[bezierPath addLineToPoint: CGPointMake(70.5, 20.5)];
[bezierPath addLineToPoint: CGPointMake(70.5, 60.5)];
[bezierPath closePath];
[bezierPath moveToPoint: CGPointMake(36.36, 54.64)];
[bezierPath addCurveToPoint: CGPointMake(50.5, 60.5) controlPoint1: CGPointMake(40.26, 58.55) controlPoint2: CGPointMake(45.38, 60.5)];
[bezierPath addLineToPoint: CGPointMake(30.5, 60.5)];
[bezierPath addLineToPoint: CGPointMake(30.5, 40.5)];
[bezierPath addCurveToPoint: CGPointMake(36.36, 54.64) controlPoint1: CGPointMake(30.5, 45.62) controlPoint2: CGPointMake(32.45, 50.74)];
[bezierPath closePath];
[fillColor2 setFill];
[bezierPath fill];
[fillColor setStroke];
bezierPath.lineWidth = 1;
[bezierPath stroke];

简单地说,我不知道如何使用此代码将此蒙版应用于单元格的图像视图。有什么建议吗?

【问题讨论】:

【参考方案1】:

我认为您可以通过编辑 UIImageView 图层的cornerRadius 属性(在导入 QuartzCore 之后),然后将 maskToBounds 设置为 true 来更轻松地完成此操作。看看这个答案:How to crop UIImage on oval shape or circle shape?

【讨论】:

以上是关于UITableViewCell 中的屏蔽图像的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义 UITableViewCell 时,imageview 框架为零

仅为 UITableViewCell 的一部分调用 didSelectRowAtIndexPath

在 UITableviewCell 中的气泡上显示图像

如何强制释放 UITableViewCell

保存 UITableviewcell accessoryView 的状态

dequeueReusableCellWithIdentifier、自定义 UITableViewCell 的问题