gpt4 book ai didi

ios - UITableView 在 View 出现之前重置其背景颜色

转载 作者:搜寻专家 更新时间:2023-10-31 22:55:48 25 4
gpt4 key购买 nike

我可能使用了一些奇特的方式来初始化我的 UI 组件。我以编程方式创建它们,其中有一个 UITableView 实例,我在初始化时立即设置它的背景颜色,如下所示:

class MyViewController: UIViewController {
...
let tableView = UITableView().tap {
$0.backgroundColor = .black
$0.separatorStyle = .none
}
...
}

其中 tap 是扩展函数:

func tap(_ block: (Self) -> Void) -> Self {
block(self)
return self
}

这在我之前的项目中运行良好,该项目是在 Xcode 8 中创建的,然后在没有破坏任何东西的情况下迁移到 Xcode 9。但是现在我已经在 Xcode 9 中创建了全新的项目并将上面提到的扩展复制粘贴到它,但似乎出了点问题。当我的 View Controller 出现在屏幕上时,表格具有白色背景和默认分隔符插入。

这似乎只影响了一些属性,因为其他属性正在正常工作(例如 $0.register(nib: UINib?, forCellReuseIdentifier: String) 注册所需的单元格类和 $0.showsVerticalScrollIndicator = false 隐藏滚动指示器)。

伙计们,也许你们中的一些人可以告诉我问题的核心是什么。

这是 full code , 要重现该问题,只需创建一个新项目并替换 ViewController.swift 的内容。如您所见,table 具有正确的 rowHeight (160),但重置了它的背景颜色。

至于“在 View 出现之前”声明:我在 viewDidLoadviewWillAppearviewDidAppear 中打印了表格的背景颜色,如下所示:

print(#function, table.backgroundColor.debugDescription)

– 它仅在最后一次调试打印时改变颜色:

viewDidLoad() Optional(UIExtendedGrayColorSpace 0 1)
viewWillAppear Optional(UIExtendedGrayColorSpace 0 1)
viewDidAppear Optional(UIExtendedSRGBColorSpace 1 1 1 1)

最佳答案

我最终将初始化移到了惰性变量的函数中——事实证明在它的 View Controller 初始化期间初始化 UITableView 有一些副作用。

关于ios - UITableView 在 View 出现之前重置其背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47860105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com