swift - UITableView.appearance().backgroundColor init 基于horizontalSiceClass
问题描述
我无法使用基于 HorizontalSizeClass 的 UITableView.appearance().backgroundColor init ->它没有做任何事情,即使与 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!"))
}
}
谢谢您的帮助!
解决方案
在初始化之后注入环境,所以为了解决这个问题,我们需要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!"))
}
}
推荐阅读
- java - 通过休息控制器映射附加值
- c# - ReadOnlyCollection 在循环中重复
- php - 从 Woocommerce 中的订单中获取本地取货和详细信息
- java - 用Java中的列表对象从哈希映射中提取列表
- algorithm - 有没有一种算法可以从二维列表中找到没有重复的排列?
- python - 我在哪里可以找到利用 SQLite 创建列的 Python 代码片段?
- informix - 如何避免 Informix 服务器中的快速恢复 (SDS)?
- php - 在 PHP 中生成所需的 JSON 格式
- r - 返回具有部分匹配条目的多行之一
- c# - UWP - 将事件传递给控制(隧道)