围绕UIImageView的内容绘制边框
我有一个UIImageView与图像是一个透明背景的汽车:
我想在车上画一个边框:
我怎样才能达到这个效果?
目前,我已经用这种方式testing了CoreGraphics,但没有好的结果:
// load the image UIImage *img = carImage; UIGraphicsBeginImageContext(img.size); CGContextRef context = UIGraphicsGetCurrentContext(); [[UIColor redColor] setFill]; CGContextTranslateCTM(context, 0, img.size.height); CGContextScaleCTM(context, 1.0, -1.0); CGContextSetBlendMode(context, kCGBlendModeNormal); CGRect rect = CGRectMake(0, 0, img.size.width * 1.1, img.size.height*1.1); CGContextDrawImage(context, rect, img.CGImage); CGContextClipToMask(context, rect, img.CGImage); CGContextAddRect(context, rect); CGContextDrawPath(context,kCGPathFill); // generate a new UIImage from the graphics context we drew onto UIImage *coloredImg = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();
任何帮助? 谢谢。
以下是我所做的:
我在Swift里做了这个,只是为了在操场上检查一下,认为可以很容易的将它翻译成Objective-C :
import UIKit func drawOutlie(#image:UIImage, color:UIColor) -> UIImage { var newImageKoef:CGFloat = 1.08 var outlinedImageRect = CGRect(x: 0.0, y: 0.0, width: image.size.width * newImageKoef, height: image.size.height * newImageKoef) var imageRect = CGRect(x: image.size.width * (newImageKoef - 1) * 0.5, y: image.size.height * (newImageKoef - 1) * 0.5, width: image.size.width, height: image.size.height) UIGraphicsBeginImageContextWithOptions(outlinedImageRect.size, false, newImageKoef) image.drawInRect(outlinedImageRect) var context = UIGraphicsGetCurrentContext() CGContextSetBlendMode(context, kCGBlendModeSourceIn) CGContextSetFillColorWithColor(context, color.CGColor) CGContextFillRect(context, outlinedImageRect) image.drawInRect(imageRect) var newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage } var imageIn = UIImage(named: "158jM") var imageOut = drawOutlie(image: imageIn, UIColor.redColor())
那么它是怎样工作的?
- 我们创build一个干净的上下文(又名canvas),有一个更大的尺寸,然后原始图像(轮廓)
- 我们在整个canvas上绘制图像
- 我们用颜色填充图像
- 我们在上面绘制较小的图像
您可以更改轮廓大小更改此属性: var newImageKoef:CGFloat = 1.08
这是我在游乐场所得到的结果