1

我目前正在处理SwiftUI中的一些加载屏幕,并希望通过简单的路径实现某种图像动画。我已经用路径做了一个简单的形状动画,但我坚持将图像剪裁到它。可能吗?

我只想让我的图像简单地飞过屏幕(具有可配置的路径)。想象笔画有背景颜色,所以我们看不到它。谢谢!

struct loadingPath: Shape {
    func path(in rect: CGRect) -> Path {
        let path =
        Path { path in
            path.move(to: CGPoint(x: rect.midX, y: rect.midY))
            path.addQuadCurve(to: CGPoint(x: 230, y: 200), control: CGPoint(x: -100, y: 300))
            path.addQuadCurve(to: CGPoint(x: 90, y: 400), control: CGPoint(x: 400, y: 130))
            path.addLine(to: CGPoint(x: 90, y: 600))
        }
        return path
    }
}

.........

var body: some View {
            ZStack {
                loadingPath()
                    .trim(from: 0, to: x)
                    .stroke(Color.purple)
                    .frame(width: 200, height: 200)
                    .onAppear() {
                        withAnimation(Animation.easeInOut(duration: 3).delay(0.5)) {
                            self.x = 1
                        }
                    }
}
4

1 回答 1

0

如果你想给形状,然后想剪裁它,那么使用以下:

.clipShape(RoundedRectangle(cornerRadius: 55,
        style: .continuous))

或者,如果你想根据它的框架来裁剪图像,那么你可以在给它框架后简单地裁剪它,如下所示:

.
.
loadingPath()
   .trim(from: 0, to: x)
   .stroke(Color.purple)
   .frame(width: 200, height: 200)
   .clipped()
   .onAppear() { ... }
于 2021-08-23T06:08:23.550 回答