FPS падает с границей углового градиента во время анимации SwiftuiIOS

Программируем под IOS
Anonymous
FPS падает с границей углового градиента во время анимации Swiftui

Сообщение Anonymous »

Я добавляю границу и размытый эффект на форму во время анимации (появляется страница) и вижу, как FPS падает при использовании угловой диагностики в качестве цвета границы. Я не вижу капель при использовании нормального цвета. Падение заметно при настройке устройства в режим «низкая батарея».

Код: Выделить всё

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())
}
}
Если я изменяю заполнение на стандартный цвет, такой как Color.blue , я не вижу, чтобы FPS не ударил. Есть идеи относительно того, как сделать градиент более эффективно? Я попытался trawngroup () , который улучшает FPS, но это делает Blur плохо, и я также хочу иметь возможность анимировать размер размытия (+ ширина границы, непрозрачность).

Подробнее здесь: https://stackoverflow.com/questions/795 ... -animation

Вернуться в «IOS»