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() { ... }