Ant*_*vič 7 path shapes swiftui
我需要从几个其他形状创建一个形状,理想情况下,我会在最后得到一个单一的形状结构,它会像 ZStack 那样堆叠两个形状。我在任何地方都没有注意到这个明显的实现,所以也许有人对如何实现它有一些想法?
这就是我想要的:
struct CustomShape: Shape {
func path(in rect: CGRect) -> Path {
// Add shapes here???? For example, combine Rectangle with Circle?
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用这样func addPath(_ path: Path, transform: CGAffineTransform = .identity)创建一个新的:Shape
struct CustomShape: Shape {
func path(in rect: CGRect) -> Path {
var customShape = Path { p in
p.move(to: CGPoint(x: 0, y: 0))
p.addQuadCurve(to: CGPoint(x: 0, y: 100),
control: CGPoint(x: 0, y: 0))
p.addCurve(to: CGPoint(x: 100, y: 400),
control1: CGPoint(x: 0, y: 200),
control2: CGPoint(x: 100, y: 200))
p.addCurve(to: CGPoint(x: 200, y: 100),
control1: CGPoint(x: 100, y: 200),
control2: CGPoint(x: 200, y: 200))
p.addQuadCurve(to: CGPoint(x: 200, y: 0),
control: CGPoint(x: 200, y: 0))
}
let rectangle = Rectangle()
.path(in: customShape.boundingRect)
.offsetBy(dx: 100, dy: 0)
customShape.addPath(rectangle, transform: .init(scaleX: 0.5, y: 0.35))
return customShape
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
struct SwiftUIView: View {
var body: some View {
CustomShape()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3879 次 |
| 最近记录: |