• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS UIImage蒙版边框

[复制链接]
菜鸟教程小白 发表于 2022-12-13 07:42:53 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

iOS 中有没有办法为不是简单矩形的图像添加边框?

我已使用以下代码成功为图像着色:

- (UIImage *)imageWithTintColorUIColor *)tintColor
{
    UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextTranslateCTM(context, 0, self.size.height);
    CGContextScaleCTM(context, 1.0, -1.0);
    CGContextSetBlendMode(context, kCGBlendModeNormal);

    CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
    CGContextClipToMask(context, rect, self.CGImage);

    [tintColor setFill];
    CGContextFillRect(context, rect);

    UIImage *tintedImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return tintedImage;
}

比如说我想给这张图片添加一个蓝色边框(注意:这不是一个 'A' NSString,而是一个 UIImage 对象示例)

enter image description here

当我将上面的代码更改为 [color setStroke]CGContextStrokeRect(context, rect) 时,图像就消失了。

我已经从 SO 那里了解到,使用 CoreImage + EdgeDetection 可以实现这一点,但难道没有“简单”的 CoreGraphics - 类似于给图像着色的方式吗?

谢谢!

-- 编辑--

请注意,我想为图像本身添加边框。我不想通过 UIImageView 创建边框效果!

在应用边框之前,边框应与图像的形状相匹配。 在这种情况下:“A”的外部 + 内部的蓝色轮廓。



Best Answer-推荐答案


我会说这不是一个非常令人满意的方法,但在某种程度上有效。

您可以使用向图层添加阴影。为此,您需要去除图像中的白色部分,让字符被 alpha 包围。

我使用了下面的代码。

UIImage *image = [UIImage imageNamed"image_name_here.png"];

CALayer *imageLayer = [CALayer layer];
imageLayer.frame = CGRectMake(0, 0, 200.0f, 200.0f);
imageLayer.contents = (id)image.CGImage;
imageLayer.position = self.view.layer.position;

imageLayer.shadowColor = [UIColor whiteColor].CGColor;
imageLayer.shadowOffset = CGSizeMake(0.0f, 0.0f);
imageLayer.shadowOpacity = 1.0f;
imageLayer.shadowRadius = 4.0f;

[self.view.layer addSublayer:imageLayer];

结果会是这样的。

And the result would be

关于iOS UIImage蒙版边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23515462/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap