如何在 SwiftUI 的自定义形状中圆角?
How to round corners in Custom Shapes in SwiftUI?
I want to add round corner (corner radius) in my custom shape. I'm having trouble using path.addCurve or path.addArc
My Custom Shape Image in SwiftUI
import SwiftUI
struct ProDetails: View {
var body: some View {
VStack {
ThemeShape()
.frame(height: 450)
.foregroundColor(.mint)
Spacer()
} .edgesIgnoringSafeArea(.top)
}
}
struct ThemeShape: Shape {
func path(in rect: CGRect) -> Path {
Path { path in
path.move(to: CGPoint(x: rect.minX, y: rect.midY))
path.addLine(to: CGPoint(x: rect.minX + 80, y: rect.midY))
path.addLine(to: CGPoint(x: rect.midX + 80, y: rect.maxY))
path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
path.addLine(to: CGPoint(x: rect.maxX, y: rect.minY))
path.addLine(to: CGPoint(x: rect.minX, y: rect.minY))
}
}
}
struct ProDetails_Previews: PreviewProvider {
static var previews: some View {
ProDetails()
}
}
struct ThemeShape: Shape {
func path(in rect: CGRect) -> Path {
Path { path in
path.move(to: CGPoint(x: rect.minX, y: rect.midY))
path.addLine(to: CGPoint(x: rect.minX + 80, y: rect.midY))
path.addCurve(to: CGPoint(x: rect.midX, y: rect.maxY * 0.75),
control1: CGPoint(x: rect.minX + 80 + 30, y: rect.midY),
control2: CGPoint(x: rect.minX + 80 + 30, y: rect.midY))
path.addCurve(to: CGPoint(x: rect.maxX - 80, y: rect.maxY),
control1: CGPoint(x: rect.maxX - 80 - 30, y: rect.maxY),
control2: CGPoint(x: rect.maxX - 80 - 30, y: rect.maxY))
path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
path.addLine(to: CGPoint(x: rect.maxX, y: rect.minY))
path.addLine(to: CGPoint(x: rect.minX, y: rect.minY))
}
}
}
I want to add round corner (corner radius) in my custom shape. I'm having trouble using path.addCurve or path.addArc
My Custom Shape Image in SwiftUI
import SwiftUI
struct ProDetails: View {
var body: some View {
VStack {
ThemeShape()
.frame(height: 450)
.foregroundColor(.mint)
Spacer()
} .edgesIgnoringSafeArea(.top)
}
}
struct ThemeShape: Shape {
func path(in rect: CGRect) -> Path {
Path { path in
path.move(to: CGPoint(x: rect.minX, y: rect.midY))
path.addLine(to: CGPoint(x: rect.minX + 80, y: rect.midY))
path.addLine(to: CGPoint(x: rect.midX + 80, y: rect.maxY))
path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
path.addLine(to: CGPoint(x: rect.maxX, y: rect.minY))
path.addLine(to: CGPoint(x: rect.minX, y: rect.minY))
}
}
}
struct ProDetails_Previews: PreviewProvider {
static var previews: some View {
ProDetails()
}
}
struct ThemeShape: Shape {
func path(in rect: CGRect) -> Path {
Path { path in
path.move(to: CGPoint(x: rect.minX, y: rect.midY))
path.addLine(to: CGPoint(x: rect.minX + 80, y: rect.midY))
path.addCurve(to: CGPoint(x: rect.midX, y: rect.maxY * 0.75),
control1: CGPoint(x: rect.minX + 80 + 30, y: rect.midY),
control2: CGPoint(x: rect.minX + 80 + 30, y: rect.midY))
path.addCurve(to: CGPoint(x: rect.maxX - 80, y: rect.maxY),
control1: CGPoint(x: rect.maxX - 80 - 30, y: rect.maxY),
control2: CGPoint(x: rect.maxX - 80 - 30, y: rect.maxY))
path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
path.addLine(to: CGPoint(x: rect.maxX, y: rect.minY))
path.addLine(to: CGPoint(x: rect.minX, y: rect.minY))
}
}
}