iOS 16 SwiftUI列表背景颜色的旧应用程序



我有一个现有的应用程序,有一个自定义的背景颜色列表视图。我在较旧的iOS版本中使用了以下方法来实现此功能。

UITableView.appearance().backgroundColor = .clear

在iOS 16中,背景上色的新方法是使用

List {
Text("Item 1")
Text("Item 2")
Text("Item 3")
}
.scrollContentBackground(Color.red)  

然而,我的应用程序的部署目标是iOS 14。当我添加上面的新代码时,我得到一个错误,说这只适用于iOS 16和更高版本。

新的列表现在是建立在UICollectionView而不是UITableView,所以我尝试

UICollectionView.appearance().backgroundColor = .clear

这不起作用。当我在模拟器中运行iOS 16时,我的自定义背景色没有显示出来。如能提供帮助,我将不胜感激。

你可以创建一个视图修饰符,以特定的方式添加背景,这取决于iOS版本是16还是更低。

初始化:

if #unavailable(iOS 16, *) {
UITableView.appearance().backgroundColor = .clear
}

当设备为iOS 16时,应用此视图修饰符来添加背景

@available(iOS 16, *)
struct ListBackgroundModifier: ViewModifier {
func body(content: Content) -> some View {
content
.scrollContentBackground(Color.red)
}
extension View {
@ViewBuilder
func addBackground() -> some View {
if #available(iOS 16, *) {
modifier(ListBackgroundModifier())
}
}
}

最新更新