0

我注意到虽然 SwiftUI 中的大多数视图都是透明的,但TabView似乎为每个视图添加了不透明的背景。所以我的问题是我怎样才能删除所说的不透明背景以使视图透明?

我尝试使用这个 StackOverflow 答案中的辅助扩展只是它似乎使我的第一个选项卡透明而不是其余选项卡,并且编译器抛出了很多警告和偶尔的错误,所以我不确定这是否是一种安全的删除方式的背景。

我还遇到了另一个关于 Hacking with Swift 的讨论,它揭示了一些TabView样式,即PageTabViewStyle,实际上允许透明背景。所以我决定尝试做一个 custom TabViewStyle,只是我完全被这个难住了:

// Custom TabViewStyle to make view transparent
struct TransparentTabViewStyle: TabViewStyle {
    static func _makeView<SelectionValue>(value: _GraphValue<_TabViewValue<TransparentTabViewStyle, SelectionValue>>, inputs: _ViewInputs) -> _ViewOutputs where SelectionValue : Hashable {
        // code
    }

    static func _makeViewList<SelectionValue>(value: _GraphValue<_TabViewValue<TransparentTabViewStyle, SelectionValue>>, inputs: _ViewListInputs) -> _ViewListOutputs where SelectionValue : Hashable {
        // code
    }
}

我不确定_GraphValue,_TabViewValue和其他数据类型是什么,但我认为它们是用于构建视图的某种隐藏值?

我还考虑添加一个扩展来DefaultTabViewStyle修改那里的背景(如果可能的话),只是我不知道在哪里可以访问TabView's 背景,因为唯一可用的东西似乎是self.

我最后的手段可能是从头开始制作自定义标签栏,但我不希望这样做。那么使我TabView的背景透明的最佳解决方案是什么?如果它正在定制 a TabViewStyle,至少有人可以为我指出实现_makeViewand_makeViewList功能的正确方向吗?

任何帮助将不胜感激!

编辑:由于某种原因,我以前尝试过它时它没有用,但这个答案似乎有效:https ://stackoverflow.com/a/63179684/12299030

编辑:实际上,这个解决方案(https://stackoverflow.com/a/63179684/12299030)似乎只适用于 Xcode 模拟器。我刚刚在实际设备上测试了我的应用程序,并且视图不再透明。

4

0 回答 0