SwiftUI: обрезка изображения для придания формы

В настоящее время я работаю над некоторым экраном загрузки в SwiftUI и хочу реализовать какую-то анимацию изображений с помощью простого пути. Я сделал простую Shape-анимацию с контуром, но я застрял с обрезкой изображения к нему . Является ли это возможным?

Я просто хочу, чтобы мое изображение просто летало над экраном (с настраиваемым путем) . Представьте, что у штриха есть цвет фона, поэтому мы его не увидим. Спасибо!

      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
                        }
                    }
}

1 ответ

Если вы хотите придать форму, а затем хотите ее обрезать, используйте следующее:

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

Или, если вы хотите обрезать изображение в соответствии с его рамкой, вы можете просто обрезать его после создания кадра, как показано ниже:

      .
.
loadingPath()
   .trim(from: 0, to: x)
   .stroke(Color.purple)
   .frame(width: 200, height: 200)
   .clipped()
   .onAppear() { ... }
Другие вопросы по тегам