SwiftUI ButtonStyle scaleEffect анимирует изменение положения кнопки

у нас есть пара кнопок, для которых настроен настраиваемый ButtonStyle, который масштабирует и изменяет альфа этих кнопок при нажатии. Эти кнопки находятся на листе, который можно перетаскивать. Как я могу предотвратить анимацию положения кнопок при использовании scaleEffect? Без стиля кнопки все в порядке, но очевидно, что он не будет анимироваться при нажатии. См. Гифку, чтобы узнать о проблеме. Спасибо.

struct ScaleButtonStyle: ButtonStyle {
    func makeBody(configuration: ButtonStyleConfiguration) -> some View {
        configuration
            .label
            .animation(nil)
            .scaleEffect(configuration.isPressed ? 0.95 : 1)
            .opacity(configuration.isPressed ? 0.8 : 1)
            .animation(.linear(duration: 0.2))
    }
}

демонстрация

См. также:  Как определить неудачные приведения с помощью оператора dynamic_cast?
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. BeginnerSirius

    Попробуйте связать анимацию со связанным значением, например

        .scaleEffect(configuration.isPressed ? 0.95 : 1)
        .opacity(configuration.isPressed ? 0.8 : 1)
        .animation(.linear(duration: 0.2), value: configuration.isPressed)
    

    Думаю, это действительно работает, спасибо. person BeginnerSirius; 31.05.2021

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: