即使在运行时设置 UIImage,如何在 UIImageView 上做弯角?

Posted

技术标签:

【中文标题】即使在运行时设置 UIImage,如何在 UIImageView 上做弯角?【英文标题】:How to do curved corners on UIImageView even when setting the UIImage at runtime? 【发布时间】:2012-02-21 22:30:52 【问题描述】:

我在 *** 上找到了有关如何在 UIImageView 上制作弯角的示例,当我在 Xcode gui 构建器工具中设置图像时,这很好用。然后,当我添加一些代码以在运行时更改图像时,弯曲的角落只是部分工作。

这是我用来尝试实现弯角的代码:

thumbnail.image = [UIImage imageNamed:self.video.thumbnailFileName];
thumbnail.contentMode = UIViewContentModeScaleAspectFill;
thumbnail.clipsToBounds = YES;

// round the corners:
thumbnail.layer.cornerRadius = 10.0;
thumbnail.layer.masksToBounds = YES;

// add a border:
thumbnail.layer.borderColor = [UIColor lightGrayColor].CGColor;
thumbnail.layer.borderWidth = 3.0;

之前:通过 Xcode 中的 gui 构建器设置图像时:

之后:以编程方式设置 UIImage。注意弯曲的角落看起来很糟糕:

应用中使用的原始 PNG 图像:

【问题讨论】:

【参考方案1】:

这里的问题是一系列奇怪的巧合......

第一个问题是我有两个版本的这个图像,不知何故,我的第一个版本仍然被转移到我的应用程序包中(或者在我以前的调试版本的应用程序包中)。第一个是不同的,因为它没有与弯曲的角落正确对齐。所以一旦我清理了我的构建,那个原始文件就消失了。

第二个问题是第二个文件的文件名略有不同,我没有注意到,这是我无法正常工作的第二个原因。

所以...代码是正确的,只是我的图像文件有问题!很抱歉造成混乱。

【讨论】:

【参考方案2】:

看起来图层顺序出错了。圆角的图像现在看起来在边框上方而不是下方。

我在层上很弱,但一个猜测:颠倒你的操作顺序。

【讨论】:

【参考方案3】:

对于任何试图圆角 UIImageView 的人,请注意您需要导入

#import <QuartzCore/QuartzCore.h> 

首先....使用图层属性。

【讨论】:

以上是关于即使在运行时设置 UIImage,如何在 UIImageView 上做弯角?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 如何将 UIImage 和 UILabel 作为页脚放在同一行?

如何将不在根层次结构中的 SwiftUI 视图呈现为 UIImage?

如何使用 swift 将 Images.xcassets 中的图像加载到 UIImage 中

应用启动时加载用户配置文件,选择视图时崩溃,将 PFFile 转换为 UIImage

如何以编程方式将图像裁剪成碎片

在运行时更改 UIImage 渲染模式