答案 0 :(得分:4)
假设灰色区域是由底部灰色矩形构建的,并且在您的弧形顶部另一个矩形,我们可以这样做:
创建一个圆形的UIBezierPath
:
let path = UIBezierPath(ovalIn:CGRect(x: 0, y: view.bounds.height/2, width: view.bounds.width, height: view.bounds.height)).cgPath
将其应用于顶部矩形。
let overlay = CAShapeLayer()
overlay.path = path
overlay.fillColor = UIColor.gray.cgColor
overlay.shouldRasterize = true
view.layer.addSublayer(overlay)
这将创建一个完美的圆圈,但您可以根据自己的喜好调整CGRect,以获得您想要的形状!
答案 1 :(得分:2)
可以通过提供标题视图UIBezierPath
来实现,但如果您不想这样做。
我找到了一种很酷的做法。
你的标题视图包含一个图像(让我们说它是HeaderImage)。
制作该形状的图像(让我们说它是MaskImage)。
let path = UIImageView.init(image: #imageLiteral(resourceName: "MaskImage"))
将此遮罩应用于标题图像。
HeaderImage.mask = path
希望它适合你。