【问题标题】:How to erase the thin side line right bottom?如何擦除右下角的细边线?
【发布时间】: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


    【解决方案1】:

    画椭圆,然后清除圆角矩形。

    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()
    }
    

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      相关资源
      最近更新 更多