图片圆角处理的封装

圆角处理的方式

  • 对layer图层动手脚
  • 通过cos2d绘制
  • 上面一种,对图层的渲染比较损耗性能,也就是会出现卡顿的情况,所以这里采用第二种

为UIImage增加一个分类,以获取圆形图片

- (UIImage *)circleImage
{
    //开启一个图形上下文,NO代表不透明
    UIGraphicsBeginImageContextWithOptions(self.size, NO, 0);
    //获取当前上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    //添加一个圆
    CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height);
    CGContextAddEllipseInRect(ctx, rect);
    
    //裁剪
    CGContextClip(ctx);
    //将图片画上去
    [self drawInRect:rect];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    //关闭上下文
    UIGraphicsEndImageContext();
    return  image;
}

针对UIImageView设置圆角图片可能出现因为图片为空,显示空白的情况,作如下封装处理

  • 为UIImageView增加一个分类
-(void)setHeader:(NSString *)image
{
    UIImage *placeholderImage = [[UIImage imageNamed:@"defaultUserIcon"]circleImage];
    [self sd_setImageWithURL:[NSURL URLWithString:image] placeholderImage:placeholderImage completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        self.image = image?[image circleImage] : placeholderImage;
    }];
}

你可能感兴趣的:(图片圆角处理的封装)