美文网首页
iOS image 切圆角

iOS image 切圆角

作者: 忧郁男生 | 来源:发表于2016-11-09 15:43 被阅读0次

#import@interface UIImage (RoundedRectImage)

+ (id)createRoundedRectImage:(UIImage*)image size:(CGSize)size radius:(NSInteger)r;

@end

#import "UIImage+RoundedRectImage.h"

@implementation UIImage (RoundedRectImage)

static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth,float ovalHeight){

float fw, fh;

if (ovalWidth == 0 || ovalHeight == 0){

CGContextAddRect(context, rect);

return;

}

CGContextSaveGState(context);

CGContextTranslateCTM(context, CGRectGetMinX(rect), CGRectGetMinY(rect));

CGContextScaleCTM(context, ovalWidth, ovalHeight);

fw = CGRectGetWidth(rect) / ovalWidth;

fh = CGRectGetHeight(rect) / ovalHeight;

CGContextMoveToPoint(context, fw, fh/2);  // Start at lower right corner

CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);  // Top right corner

CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); // Top left corner

CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1); // Lower left corner

CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); // Back to lower right

CGContextClosePath(context);

CGContextRestoreGState(context);

}

+ (id)createRoundedRectImage:(UIImage*)image size:(CGSize)size radius:(NSInteger)r

{

// the size of CGContextRef

int w = size.width;

int h = size.height;

UIImage *img = image;

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);

CGRect rect = CGRectMake(0, 0, w, h);

CGContextBeginPath(context);

addRoundedRectToPath(context, rect, r, r);

CGContextClosePath(context);

CGContextClip(context);

CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);

CGImageRef imageMasked = CGBitmapContextCreateImage(context);

img = [UIImage imageWithCGImage:imageMasked];

CGContextRelease(context);

CGColorSpaceRelease(colorSpace);

CGImageRelease(imageMasked);

return img;

}

@end

相关文章

  • ios image圆角

    通过获取图片的上下文,绘制一个圆角矩形,然后,切割超出部分来获得圆角效果

  • iOS image 切圆角

    #import@interface UIImage (RoundedRectImage)+ (id)createR...

  • iOS image设置图片圆角

    合理的设置图片圆角能更高的提高APP的性能,在模拟器上,可以通过以下操作进行查看图片是否被及时渲染。模拟器打开AP...

  • rn 安卓和ios差异性问题

    1 有圆角的有背景色的image,在安卓上image设置圆角无效,需外面包一层有圆角有背景色的view 2 桥套的...

  • 绘制圆角

    通过MaskView 来实现圆角功能 image 扩展

  • iOS 绘制圆角

    级别: ★☆☆☆☆标签:「iOS切圆角」「layer圆角」「CAShapeLayer圆角」作者: Xs·H审校: ...

  • iOS高效添加圆角效果实战讲解

    iOS高效添加圆角效果实战讲解 iOS高效添加圆角效果实战讲解

  • iOS 常用组件-高效切圆角方法总结

    iOS 常用组件-高效切圆角方法总结 iOS 常用组件-高效切圆角方法总结

  • 图片-视图

    1 image的圆角问题 老问题,出现问题的根源在圆角效果可能带来的离屏渲染。 a. 圆角图片。b. 子线程做圆角...

  • iOS设置圆角的四种方法

    原文iOS设置圆角的四种方法iOS设置圆角的方法及指定圆角的位置 一、设置CALayer的cornerRadius...

网友评论

      本文标题:iOS image 切圆角

      本文链接:https://www.haomeiwen.com/subject/uwzzuttx.html