Отключить анимацию нажатия кнопки по умолчанию в SwiftUi - PullRequest
1 голос
/ 04 мая 2020

Как отключить анимацию нажатия кнопок по умолчанию в SwiftUI и Swift 5? Я попытался добавить .animation(.nil) к кнопке, без каких-либо изменений.

Я знаю, что вы можете сделать следующее:

Button(action: {}) { Capsule() }
.buttonStyle(NoAnim())

struct NoAnim: ButtonStyle {
func makeBody(configuration: Self.Configuration) -> some View {
    configuration.label
}

Кто-нибудь знает более разумный способ?

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

iOS 13.x, Swift 5.

Итак, вы хотите что-то, что можно нажимать, а не кнопку. Просто используйте ярлык с onTapGesture на нем, и затем вы можете добавить любую анимацию, какую захотите.

В качестве альтернативы вы можете использовать жест onDrag, как этот. Это обновит dragLocation, как только вы прикоснетесь к нему. Так что это как сенсорное событие. У этого также нет никакой анимации, понравившейся этому также. Что вы можете добавить, если вы так wi sh.

Text("Hello World")
.accessibility(label: Text("Button"))
.gesture(
    DragGesture(minimumDistance: 5, coordinateSpace: .global)
        .onChanged { value in
          self.dragLocation = value.location
        }
        .onEnded { _ in
          self.dragLocation = .zero
        }
)
0 голосов
/ 04 мая 2020

Если я правильно понял ваш вопрос, то лучше использовать просто

Capsule()
  .onTapGesture {
    // << action here !!
  }
...