我面临一个持续数天的问题。我正在创建一个需要自定义导航链接(按钮)的 tvos 应用程序,当我将焦点移动到导航项时,它应该会缩放一点,并且我还需要更改父视图的背景。这很简单,但似乎 focusabe 覆盖了我的自定义按钮样式。测试表明,当导航按钮获得焦点时,背景图像发生了变化,但没有任何缩放效果。有什么建议吗?
NavigationLink(destination: Text("myview"))
{Text("Test")
}
.buttonStyle(myButtonStyle())
.Focusable(true){(focus) in
//the code to change the background image
//myButtonStyle definition
struct MyButtonStyle: ButtonStyle {
func makeBody(configuration: Configuration) -> some View {
return AppButton(configuration: configuration)
}
}
struct AppButton: View {
@Environment(\.isFocused) var focused: Bool
let configuration: ButtonStyle.Configuration
var body: some View {
configuration.label
.scaleEffect(focused ? 1.1 : 1.0)
.focusable(true)
}
}
当项目按我的预期获得焦点时,始终调用更改背景图像的行,但缩放效果消失了。如果我删除以下代码行,规模效应又回来了:
// .Focusable(true){(focus) in
//the code to change the background image
// }
看起来这行代码覆盖了我的导航按钮的自定义样式,有什么想法吗?感谢任何帮助!