在 tvOS 上的 SwiftUI 中更改按钮的颜色

Pau*_*w11 1 button swift tvos swiftui

我正在尝试更改ButtontvOS 上SwiftUI 的颜色。

修改background几乎可以工作,除了您可以看到底层UIButton实际上是在背景顶部使用圆形的半透明图像。这会导致矩形背景位于圆形图像之外的角落处的颜色不同。

在此处输入图片说明

添加.padding强调了这个问题:

在此处输入图片说明

struct ContentView: View {

    @State
    var selected = false

    var body: some View {

        Button(action: {
            self.selected.toggle()
        }) {
               Text($selected.wrappedValue ? "On":"Off")
                .foregroundColor(.white)
            }.padding(.all)
             .background(self.selected ? Color.green : Color.blue)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一个相关的问题是更改“焦点”视图的颜色,因为我怀疑这是与按钮本身相同的视图,转换了大小和颜色。

tvOS 中带有 a 的典型技术UIButton是更改按钮图像,但似乎没有任何方法可以访问底层UIButton.

LuL*_*aGa 5

同样,我只在 iOS 上检查过它,但这应该会有所帮助:

struct ContentView: View {

    @State var selected = false

    var body: some View {

        Button(action: { self.selected.toggle() }) {
            Text($selected.wrappedValue ? "On":"Off")
                .foregroundColor(.white)
        }   .padding(.all)
            .background(RoundedRectangle(cornerRadius: 5.0)
                            .fill(self.selected ? Color.green : Color.blue))

    }
}
Run Code Online (Sandbox Code Playgroud)

您可以将任何视图传递给 .background() 修饰符,因此您可能还想尝试在其中放置一个 Image()。