我想将形状切成两半并创建一个像这样的形状(紫色形状):
就像将圆角矩形剪成两半一样。我当前的代码:
struct LeadingClipper: Shape {
let leading: CGFloat
func path(in rect: CGRect) -> Path {
RoundedRectangle(cornerRadius: 25, style: .continuous).path(in: CGRect(x: rect.size.width - leading,y: 0 , width: rect.size.width, height: leading))
}
}
Run Code Online (Sandbox Code Playgroud)
Geo*_*e_E 16
这将创建您正在寻找的形状:
struct ContentView: View {
private let width: CGFloat = 100
var body: some View {
RoundedRectangle(cornerRadius: 25, style: .continuous)
.fill(Color.purple)
.frame(width: width, height: 50)
.offset(x: -width / 2)
.clipped()
.offset(x: width / 4)
.frame(width: width / 2)
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
RoundedRectangle(cornerRadius: 25, style: .continuous)
.fill(Color.purple)
.frame(width: width, height: 50)
Run Code Online (Sandbox Code Playgroud)

offset修改器不会更改视图的布局,只是更改视觉偏移:.offset(x: -width / 2)
//.background(Color.green)
Run Code Online (Sandbox Code Playgroud)

.clipped()
Run Code Online (Sandbox Code Playgroud)

border评论显示仍然相同的实际边界框:.offset(x: width / 4)
//.border(Color.red)
Run Code Online (Sandbox Code Playgroud)

.frame(width: width / 2)
//.border(Color.blue)
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
2777 次 |
| 最近记录: |