Swift5中如何将UIView设置成半圆

How to set UIView in semi circle in Swift 5

我想将我的 UIView 裁剪成半圆形,这将支持所有 iPhone 设备。在这里,我们不能设置高度和宽度来固定。我正在使用乘数。

这是我检查过的一些 SO 答案。

这是可行的,但不是用乘法器固定高度和宽度,我的目标是通用设备。 下面是半圆 UIView 的图像。

提前致谢。

我刚刚修改了 link 代码中的循环代码。问题出在原始代码中,当再次调用 layoutSubviews 方法时它使用了初始帧 semiCirleLayer == nil 这种情况被阻止更新贝塞尔路径。

class SemiCirleView: UIView {
    
    var semiCirleLayer: CAShapeLayer = CAShapeLayer()
    
    override func layoutSubviews() {
        super.layoutSubviews()
        let arcCenter = CGPoint(x: bounds.size.width / 2, y: bounds.size.height)
        let circleRadius = bounds.size.width / 2
        let circlePath = UIBezierPath(arcCenter: arcCenter, radius: circleRadius, startAngle: CGFloat.pi, endAngle: CGFloat.pi * 2, clockwise: true)
        
        semiCirleLayer.path = circlePath.cgPath
        semiCirleLayer.fillColor = UIColor.red.cgColor
        
        semiCirleLayer.name = "RedCircleLayer"
        
        if !(layer.sublayers?.contains(where: {[=10=].name == "RedCircleLayer"}) ?? false) {
            layer.addSublayer(semiCirleLayer)
        }
        
        // Make the view color transparent
        backgroundColor = UIColor.clear
    }
}