Swift 以编程方式在屏幕上绘制自定义椭圆形

Swift 以编程方式在屏幕上绘制自定义椭圆形,swift,uikit,draw,Swift,Uikit,Draw,如何在swift(非swiftUI)中绘制如下图所示的自定义椭圆形 先谢谢你 您可以像这样绘制椭圆形路径 class CustomOval: UView { override func drawRect(rect: CGRect) { var ovalPath = UIBezierPath(ovalIn: rect) UIColor.gray.setFill() ovalPath.fill() } } 我曾尝试使用UIView克隆

如何在swift(非swiftUI)中绘制如下图所示的自定义椭圆形

先谢谢你

您可以像这样绘制椭圆形路径

class CustomOval: UView {

    override func drawRect(rect: CGRect) {
       var ovalPath = UIBezierPath(ovalIn: rect)
        UIColor.gray.setFill()
        ovalPath.fill()
    }
}

我曾尝试使用UIView克隆类似的视图,并能够创建类似的UI,正如您在屏幕截图上所述

这是我的代码片段

let width: CGFloat = view.frame.size.width
let height: CGFloat = view.frame.size.height

let path = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height), cornerRadius: 0)
let rect = CGRect(x: width / 2 - 150, y: height / 2.5 - 100, width:  300, height: 400)
let circlePath = UIBezierPath(ovalIn: rect)
path.append(circlePath)
path.usesEvenOddFillRule = true

let fillLayer = CAShapeLayer()
fillLayer.path = path.cgPath
fillLayer.fillRule = .evenOdd
fillLayer.fillColor = UIColor.red.cgColor
fillLayer.opacity = 0.5
view.layer.addSublayer(fillLayer)

希望这对你有帮助。您好。

查找UIBezierPath,在您的案例中,一个带有圆角半径的矩形就足够了。您能分享一些代码片段吗?那会对我有很大帮助你可以用cornerRadius。。。