Как применить градиент к accentColor любого View - SwiftUI - PullRequest
0 голосов
/ 29 апреля 2020

Здесь я работаю со Слайдером. Мы можем изменить accentColor ползунка следующим образом:

Slider(value: $tip, in: 0...50, step: 1)
     .accentColor(.red) 

enter image description here

Но как применить Gradient к accentColor?

Я пытался применить градиент с помощью маскирующего ползунка, но потом я больше не могу его скользить.

LinearGradient(gradient: Gradient(colors: [.red, .blue]), startPoint: .top, endPoint: .bottom)
     .mask(Slider(value: $tip, in: 0...50, step: 1))

Так есть ли какой-нибудь косвенный способ сделать это?

1 Ответ

1 голос
/ 30 апреля 2020
ZStack {
      LinearGradient(
          gradient: Gradient(colors: [.red, .blue]), 
          startPoint: .leading, 
          endPoint: .trailing
      )
      .mask(Slider(value: $val, in: 0...50, step: 1))

      // Dummy replicated slider, to allow sliding
      Slider(value: $val, in: 0...50, step: 1)
          .opacity(0.05) // Opacity is the trick here.
         // .accentColor(.clear) 
         // instead setting opacity, 
         // setting clear color is another alternative
         // slider's circle remains white in this case
}

enter image description here

...