[小技巧]自定义图片的圆角

要实现的效果

主要思路:利用Quarts 2D对图片进行重新绘制。暂未考虑性能优化。

核心方法:

- (void)drawCornerImage
{
    /**
     *  利用BeezierPath绘制圆角图片区域
     *
     *  参数一: 图片位置大小范围
     *  参数二: 圆角位置
     *  参数三: 圆角半径
     */
    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                               byRoundingCorners:self.corners
                                                     cornerRadii:CGSizeMake(self.cornerRadiu, self.cornerRadiu)];
    //  因为这里是从边上裁剪的,所以设置的边框宽度要成2,因为会截去一半边框。
    path.lineWidth = self.borderWidth * 2;
    // 如果有边框,才设置颜色
    if (self.borderWidth != 0) {
        [self.borderColor setStroke];
    }
    // 截取上下文区域
    [path addClip];

    UIImage *image = [UIImage imageNamed:self.imgName];
    [image drawInRect:CGRectMake(self.borderWidth * 0.5, self.borderWidth * 0.5, path.bounds.size.width - self.borderWidth, path.bounds.size.height - self.borderWidth)];
    // 先重绘图片,最后渲染边框,否则图片会覆盖边框
    [path stroke];

}

Demo详细地址:https://github.com/iDustPan/CustomCornerImage

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值