如何擦除右下角的细边线?

How to erase the thin side line right bottom?

我想要复合视图的形状从椭圆形减去矩形,

所以我首先创建一个遮罩图像:

    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

运行 应用程序,我明白了:

看起来不错?不是真的...

如果你仔细看,你会发现视图右下角有一条细线

我觉得不行!

如何删除边线???谢谢:)

绘制椭圆,然后清除圆角矩形。

import UIKit

let ellipse = CGPath(ellipseIn: CGRect(x: 0, y: 0, width: 200, height: 150), transform: nil)
let roundedRect = CGPath(roundedRect: CGRect(x: 100, y: 100, width: 120, height: 100), cornerWidth: 8, cornerHeight: 8, transform: nil)

let maskImage = UIGraphicsImageRenderer(size: CGSize(width: 220, height: 200)).image { rendererContext in
    let ctx = rendererContext.cgContext

    ctx.setFillColor(UIColor.red.cgColor)
    ctx.addPath(ellipse)
    ctx.fillPath()

    ctx.setBlendMode(.clear)
    ctx.addPath(roundedRect)
    ctx.fillPath()
}

结果: