gpt4 book ai didi

swift - 使用蒙版从 UIView 中切出一个圆圈

转载 作者:可可西里 更新时间:2023-10-31 23:57:48 26 4
gpt4 key购买 nike

<分区>

在我的应用程序中,我有一个正方形 UIView,我想在其顶部切出一个孔/槽口。所有的在线教程都是一样的,看起来很简单,但每一个教程总是提供与我想要的完全相反的东西。

例如,这是自定义 UIView 的代码:

class BottomOverlayView: UIView {

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
drawCircle()
}

fileprivate func drawCircle(){

let circleRadius: CGFloat = 80
let topMidRectangle = CGRect(x: 0, y: 0, width: circleRadius*2, height: circleRadius*2)

let circle: CAShapeLayer = CAShapeLayer()
circle.position = CGPoint(x: (frame.width/2)-circleRadius, y: 0-circleRadius)
circle.fillColor = UIColor.black.cgColor
circle.path = UIBezierPath(ovalIn: topMidRectangle).cgPath
circle.fillRule = kCAFillRuleEvenOdd

self.layer.mask = circle
self.clipsToBounds = true
}
}

这是我希望实现的(浅蓝色是 UIView,深蓝色是背景):

What I want

但这是我得到的。 (无论我尝试什么,每一次)

What I get

除了制作一个形状已经完全符合我需要的面具之外,我不确定如何实现这一点。但如果我能够做到这一点,那么我一开始就不会遇到这个问题。有没有人对如何实现这一目标有任何提示?

编辑: 这个问题应该是我已经尝试过但无法开始工作的副本。也许我做错了或者在错误的上下文中使用它。我不熟悉任何给定的方法,而且指针的使用使它看起来有点过时。接受的答案更好地解释了如何使用更广泛使用的 UIBezierPaths 以及在自定义 UIView 的上下文中实现这一点。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com