我无法在UITableView.appearance().backgroundColor init中使用基于horizontalSizeClass -> 的工具--即使与UIDevice.current.localizedModel的代码相同,也不会做任何事情。
我需要使用horizontalSizeClass,因为两个类的UI略有不同。
您可以在肖像中的任何iPhone中预览。当你看到粉红色时,你得到了它(如果它仍然是白色的,请看iPad:-)。
struct testBackground: View {
@Environment(\.horizontalSizeClass) var horizontalSizeClass
init() {
if horizontalSizeClass == .compact {
UITableView.appearance().backgroundColor = UIColor(Color.pink)
}
// FOLLOWING WORKS:
// if UIDevice.current.localizedModel == "iPhone" {
// UITableView.appearance().backgroundColor = UIColor(Color.pink)
// }
}
var body: some View {
List {
}.overlay(Text("Hi, pink world!"))
}
}谢谢你的帮助!
发布于 2020-11-25 19:15:45
init之后注入的环境,因此为了解决这个问题,我们需要将List移动到分离的视图中,并通过视图构造器参数传递环境值(在body中它已经可用)
struct TestBackground: View {
@Environment(\.horizontalSizeClass) var horizontalSizeClass
var body: some View {
ListContainerView(horizontalSizeClass: horizontalSizeClass)
}
}
struct ListContainerView: View {
init(horizontalSizeClass: UserInterfaceSizeClass?) {
if horizontalSizeClass == .compact {
UITableView.appearance().backgroundColor = UIColor(Color.pink)
}
}
var body: some View {
List {
}.overlay(Text("Hi, pink world!"))
}
}https://stackoverflow.com/questions/65011234
复制相似问题