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
}
}
我想将我的 UIView 裁剪成半圆形,这将支持所有 iPhone 设备。在这里,我们不能设置高度和宽度来固定。我正在使用乘数。
这是我检查过的一些 SO 答案。
这是可行的,但不是用乘法器固定高度和宽度,我的目标是通用设备。 下面是半圆 UIView 的图像。
提前致谢。
我刚刚修改了 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
}
}