Ios 为什么未列出UITableViewCell的分隔符视图?
我想删除某些UITableViewCell分隔符,但不是全部 我在UI中看到它们,但不明白为什么在打印子视图层次结构时它们没有被列出Ios 为什么未列出UITableViewCell的分隔符视图?,ios,swift,uitableview,separator,subviews,Ios,Swift,Uitableview,Separator,Subviews,我想删除某些UITableViewCell分隔符,但不是全部 我在UI中看到它们,但不明白为什么在打印子视图层次结构时它们没有被列出 for view in cell.subviews { DDLogDebug(String(describing: type(of: view))) } 这似乎发生在最初的看法。如果我将UITableView单元格滚动到远离视图的地方,然后再滚动回来,UITableViewCell的分隔符会神奇地出现在子视图日志打印输出中。这是怎么回事 注意:我只在模拟
for view in cell.subviews {
DDLogDebug(String(describing: type(of: view)))
}
这似乎发生在最初的看法。如果我将UITableView单元格滚动到远离视图的地方,然后再滚动回来,UITableViewCell的分隔符会神奇地出现在子视图日志打印输出中。这是怎么回事
注意:我只在模拟器上进行了测试,因为我目前没有iPhone X。您可以使用情节提要和编程方式删除分隔符 故事板 只需单击表视图并转到属性检查器,从中选择分隔符并将其从默认值更改为无 代码 在viewDidLoad中使用以下代码 编辑隐藏或删除单个单元格的分隔
有人已经就此社区提出了评论性问题。处理单细胞分离的解决方案也是如此。您可以使用故事板和编程方式删除分离器 故事板 只需单击表视图并转到属性检查器,从中选择分隔符并将其从默认值更改为无 代码 在viewDidLoad中使用以下代码 编辑隐藏或删除单个单元格的分隔
有人已经就此社区提出了评论性问题。处理单细胞分离的解决方案也是如此。在细胞外部使用UITableViewCell似乎不如简单地对细胞进行子分类并从细胞内部进行控制那么可靠 因此,我的解决方案如下:
class myCell: UITableViewCell {
var withSeparator: Bool = true
func layoutSubviews() {
super.layoutSubviews()
if !withSeparator {
self.removeBottomSeparator()
}
}
...
extension UITableViewCell {
func removeBottomSeparator() {
// Remove it if it's found.
for view in self.subviews where String(describing: type(of: view)).hasSuffix("SeparatorView") {
view.removeFromSuperview()
}
}
}
使用此方法可以让我每次都找到SeparatorView并将其删除 在单元外部使用UITableViewCell似乎不如简单地对单元进行子类化并从单元内部进行控制那么可靠 因此,我的解决方案如下:
class myCell: UITableViewCell {
var withSeparator: Bool = true
func layoutSubviews() {
super.layoutSubviews()
if !withSeparator {
self.removeBottomSeparator()
}
}
...
extension UITableViewCell {
func removeBottomSeparator() {
// Remove it if it's found.
for view in self.subviews where String(describing: type(of: view)).hasSuffix("SeparatorView") {
view.removeFromSuperview()
}
}
}
使用此方法可以让我每次都找到SeparatorView并将其删除 我对iPhone X上的UITableView分隔符也有同样的问题。我能够通过改变手机背景来解决这个问题:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: UITableViewCell = ...
...
**cell.backgroundColor = .clear** // <= MAGIC LINE
return cell
}
我对iPhone X上的UITableView分隔符也有同样的问题。我能够通过改变手机背景来解决这个问题:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: UITableViewCell = ...
...
**cell.backgroundColor = .clear** // <= MAGIC LINE
return cell
}
除非我想删除某些UITableViewCell分隔符;不是所有的。@SebastianDwornik我编辑了我的答案,删除了某个UITableViewCell分隔。希望它能帮助你解决你的问题。如果您有任何进一步的问题,请告诉我。我以前读过这个解决方案,问题是将分隔符设置远离屏幕似乎也会改变iPhone X/8plus的边距。使文本标签最左或最右对齐:/除非我想删除某些UITableViewCell分隔符;不是所有的。@SebastianDwornik我编辑了我的答案,删除了某个UITableViewCell分隔。希望它能帮助你解决你的问题。如果您有任何进一步的问题,请告诉我。我以前读过这个解决方案,问题是将分隔符设置远离屏幕似乎也会改变iPhone X/8plus的边距。使文本标签最左或最右对齐:/我喜欢不加解释的否决票。我喜欢不加解释的否决票。