【发布时间】:2019-11-18 13:35:00
【问题描述】:
我正在尝试创建一个自定义视图,并在中间添加一个图像视图。
类似这样的:
但是我不太习惯UIBezierPath,所以我很困惑。
这是我到目前为止所做的。
class DemoView: UIView {
var path: UIBezierPath!
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = UIColor.darkGray
complexShape()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
complexShape()
}
func complexShape() {
path = UIBezierPath()
path.move(to: CGPoint(x: 0.0, y: 0.0))
path.addLine(to: CGPoint(x: self.frame.size.width/2 - 50.0, y: 0.0))
path.addLine(to: CGPoint(x: self.frame.size.width/2, y: 0.0))
path.addCurve(to: CGPoint(x: self.frame.size.width, y: 50.0),
controlPoint1: CGPoint(x: self.frame.size.width + 50.0, y: 25.0),
controlPoint2: CGPoint(x: self.frame.size.width - 150.0, y: 50.0))
path.addLine(to: CGPoint(x: self.frame.size.width, y: self.frame.size.height))
path.addLine(to: CGPoint(x: 0.0, y: self.frame.size.height))
path.close()
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
self.layer.mask = shapeLayer
}
}
extension CGFloat {
func toRadians() -> CGFloat {
return self * .pi / 180.0
}
}
【问题讨论】:
-
你问的是什么?你还没问过?你想要贝塞尔路径做什么?你想要动画吗?你想让红框移动吗?你的问题不清楚你在寻求什么帮助
-
@JulianSilvestri 我不想移动任何东西。我只想创建一个类似于图像的视图(白色)。带有波浪形顶部。
-
参考这个链接:medium.com/@GultekinGokhan/…
标签: ios swift uiview uibezierpath