Rec*_*iwe 6 xcode uitableview ios swift
我已经构建了一个包含带有一堆单元格的UITableView的应用程序.在细胞内部,我有一个视图,它填满整个细胞.我已经像这样配置了tableview:
tableView.separatorStyle = .none
tableView.backgroundColor = UIColor(red: 24/255.0, green: 34/255.0, blue: 41/255.0, alpha: 100)
tableView.separatorColor = UIColor(red: 26/255.0, green: 34/255.0, blue: 40/255.0, alpha: 100)
Run Code Online (Sandbox Code Playgroud)
每当应用程序进入前台时,我都会将这些小线条闪烁0.5秒左右.要清楚,我不想要那些.
这就是应用程序完全进入前景时的样子,以及它应该是什么样子:
任何想法如何摆脱它们?
编辑1:
我开始怀疑闪烁与分隔符有关,因为它只发生在一个部分的单元格之间,而不是部分单元格和一个部分中的第一个单元格之间.我抓住了视图层次结构的一些截图以及与我在单元格中显示的视图(前景视图)相关的约束.
编辑2:
如果我将顶部和底部约束设置为-2而不是0,则根本没有闪烁,但是它并不像我想要的那样直观.因此,闪烁与分离器无关.
尝试将表格视图分隔符颜色设置为完全透明,它可能会有所帮助
tableView.separatorColor = UIColor(red: 26/255.0, green: 34/255.0, blue: 40/255.0, alpha: 0)
Run Code Online (Sandbox Code Playgroud)
在 viewWillAppear 中执行此操作
如果这无助于检查视图层次结构,则可能是单元格渲染存在问题
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
Run Code Online (Sandbox Code Playgroud)
查看这篇文章及其 swift 4 更新
或者尝试将此扩展添加到您的 ViewController
extension UITableViewCell {
func removeCellSeparators() {
for subview in subviews {
if subview != contentView && subview.frame.width == frame.width {
subview.removeFromSuperview()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后尝试在返回单元格之前调用它
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "YourCellIdentifier", for: indexPath)
cell.removeSeparators()
return cell
}
Run Code Online (Sandbox Code Playgroud)
如果这没有帮助,那么请发布有关您的设置、代码的更多信息,或者可能在 gitHub 上托管存在问题的 tableView 的应用程序的最小版本,以便我可以提供帮助。
编辑1:
尝试将 rowHeight / cellHeight 设置为比当前值高 15 像素,如果这能解决您的问题,那么 cellHeight 需要调整的可能是它只需要高 2-4 像素。可能当应用程序进入前台自动布局时,它会尝试尽其所能地显示您想要的所有内容,但是有些限制是不明确的,因此,当从后台进入时,系统会出现大约半秒的视图动画,并且有你的闪烁也是如此。