FPS fallen bei Swiftui -Animation mit einem Winkelgradientenrand ab
Posted: 13 Apr 2025, 02:18
Ich füge einen Rand- und Unschärfeneffekt auf eine Form während einer Animation hinzu (Seite erscheint) und sehe FPS -Tropfen bei der Verwendung eines Winkelgradienten als Farbe des Randes. Ich sehe die Tropfen nicht, wenn ich eine normale Farbe benutze. Der Tropfen ist beim Einstellen eines Geräts in den Modus "niedriger Akku" auffällig.
Wenn ich das FillColor in eine Standardfarbe wie Color ändere. Blue sehe ich keine FPS -Tropfen. Irgendwelche Ideen, wie der Gradient effizienter wird? Ich habe versucht Drawinggroup () , das die FPS verbessert, aber es macht die Unschärfe schlecht, und ich möchte auch in der Lage sein, die Unschärfe zu belasten (+ Grenzbreite, Deckkraft).
Code: Select all
struct BorderBlur: ViewModifier {
var fillColor: some ShapeStyle {
AngularGradient(
colors: [.blue, .purple, .green, .blue],
center: .center)
}
var myShape : some Shape {
RoundedRectangle(cornerRadius:36)
}
let borderWidth = 3.0
let blurRadius = 5.0
public func body(content: Content) -> some View {
content
.overlay(
myShape
.stroke(lineWidth: borderWidth)
.fill(fillColor)
.padding(borderWidth)
)
.overlay(
myShape
.stroke(lineWidth: borderWidth)
.fill(fillColor)
.blur(radius: blurRadius)
.padding(borderWidth)
)
.overlay(
myShape
.stroke(lineWidth: borderWidth)
.fill(fillColor)
.blur(radius: blurRadius / 2)
.padding(borderWidth)
)
}
}
extension View {
public func borderBlur() -> some View {
return modifier(BorderBlur())
}
}