【发布时间】:2019-02-04 13:18:29
【问题描述】:
我想要复合视图的形状从椭圆形减去矩形,
首先我创建一个蒙版图像:
let paths = CGMutablePath()
//Oval shape path at left
let leftPath = CGPath(ellipseIn: CGRect(x: 0, y: 0, width: 200, height: 150), transform: nil)
//Rect shape path at right
let rightPath = CGPath(roundedRect: CGRect(x: 100, y: 100, width: 120, height: 100), cornerWidth: 8, cornerHeight: 8, transform: nil)
paths.addPath(leftPath)
paths.addPath(rightPath)
UIGraphicsBeginImageContext(CGSize(width: 220, height: 200))
let ctx = UIGraphicsGetCurrentContext()
ctx?.addPath(paths)
ctx?.clip(using: .evenOdd)
ctx?.addPath(leftPath.cgPath)
ctx?.clip(using: .evenOdd)
ctx?.setFillColor(UIColor.red.cgColor)
ctx?.fill(CGRect(x: 0, y: 0, width: 220, height: 200))
//the mask image
let maskImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
接下来我用这张图片做面具:
let maskView = UIImageView(image: maskImage)
maskView.contentMode = .center
imageView.mask = maskView
运行应用程序,我明白了:
看起来不错?不是真的...
如果你仔细看,你会发现右下角有一条细线
这对我来说不行!
我如何消除边线???谢谢:)
【问题讨论】:
标签: ios core-graphics mask cgpath