使用圆角和边框制作UIImage

时间:2016-03-20 19:02:58

标签: ios objective-c uiimage

我有一个UIImage我需要用白色边框打圆。我不需要UIImageView

你是怎么做到的?

2 个答案:

答案 0 :(得分:8)

您可以使用QuartzCore函数创建图像上下文,绘制剪切的图像,然后描边路径:

- (UIImage *)imageWithBorderAndRoundCornersWithImage:(UIImage *)image lineWidth:(CGFloat)lineWidth cornerRadius:(CGFloat)cornerRadius {
    UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale);
    CGRect rect = CGRectZero;
    rect.size = image.size;
    CGRect pathRect = CGRectInset(rect, lineWidth / 2.0, lineWidth / 2.0);

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);

    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:pathRect cornerRadius:cornerRadius];

    CGContextBeginPath(context);
    CGContextAddPath(context, path.CGPath);
    CGContextClosePath(context);
    CGContextClip(context);

    [image drawAtPoint:CGPointZero];

    CGContextRestoreGState(context);

    [[UIColor whiteColor] setStroke];
    path.lineWidth = lineWidth;
    [path stroke];

    UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return finalImage;
}

这需要:

without border

并且:

enter image description here

答案 1 :(得分:-1)

需要 UIImageView以简单的方式执行此操作。圆角(角半径)和边框厚度/颜色是UIView的CALayer的典型属性。最简单的方法是使用UIImageView或其他类型的UIView来实现它。

这样的事情可能会起到作用。

let myImg = UIImage(named: "some_image.png")
let imgView = UIImageView(image: myImg)
imgView.clipsToBounds = true
imgView.layer.cornerRadius = 0.5*imgView.frame.width
imgView.layer.borderWidth = 5.0 //Or some other value
imgView.layer.borderColor = UIColor.whiteColor().CGColor