iOS 13 UITableViewCell |子视图被剪掉

Posted

技术标签:

【中文标题】iOS 13 UITableViewCell |子视图被剪掉【英文标题】:iOS 13 UITableViewCell | Child view gets clipped out 【发布时间】:2019-09-24 11:50:15 【问题描述】:

所以我有一个UITableView,其中包含一个UITableViewCell,并且tableView.header 设置为视差标题。 UITableViewCell 具有某些 UIViews,它们被设置为 Top 的负约束,并且在 iOS-12 上完美显示,而在 iOS-13 上观察时 @987654332显示在 Parallax Header 上的 @s 被剪裁。我已经尝试了所有可能的解决方案,但不幸的是它仍然显示相同。我的应用程序选择退出 SwiftUI 并仍在运行旧代码。我什至试图改变孩子UIViewzIndex 但还是一样。以下是一些快照和一些代码:

override func awakeFromNib() 
    super.awakeFromNib()
    // Initialization code

    self.PriceView.layer.zPosition = 1
    self.PriceView.bringSubviewToFront(self.contentView)
    self.PriceView.setNeedsDisplay()

此代码适用于 iOS-12,但不适用于 iOS-13

更新:

Apple 的 iOS-13 变更日志/文档建议:

UITableViewCell 类的 contentView 属性总是被布局的 边缘到边缘与相邻的附件,无论是在领先和 尾随侧。这简化了布局代码,因此想要的开发人员 正确的默认偏移不再需要将其内容与 内容视图边框或布局边距取决于是否 尾端是否有配件。你现在应该 总是在单元格内容的布局边距上布置他们的代码 查看以获取默认的系统插图。这些插图将被调整 自动根据单元格中可见的附件进行匹配 系统的默认间距。 (48214114)

这对我来说有点不清楚,如果有人可以在这里帮助我。

以下是它在 iOS-12 中的显示方式的快照,这是必需的,以及它在 iOS-13 中的显示方式分别为:

这里观察 iOS-13

这里也是我UITableViewCellPriceView的约束布局:

我需要在两个操作系统上保持一致。非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

哇哦!我终于弄明白了。因此,在默认情况下,它在 iOS-12 上工作,但在 iOS-13UITableViewCell 如问题所述更改之后,它停止工作。这是我所做的:

    首先,在Size Inspector中,UITableViewCellContentView 设置为Safe Area Layout Guide,我将其关闭并打开Safe Area Relative Margins,同样我为孩子做了同样的事情,如在 PriceView 中。 其次,在属性检查器中,ContentViewUITableViewCell 都打开了 Autoresize Subviews 属性,我只是将其关闭

瞧!有用。希望任何可能有这些UITableViewCell 问题的人,请注意现在都是相对的?

【讨论】:

【参考方案2】:

实际上,对我有用的是从内容视图的属性检查器中取消选中“剪辑到边界”

【讨论】:

以上是关于iOS 13 UITableViewCell |子视图被剪掉的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8:UITableViewCell.contentView 不会调整其中的子视图大小

UITableViewCell 子视图在 iOS7 中只返回 UITableViewCellScrollView

如何在 iOS 13.3 上使用 xib 显示 UITableViewCell?

iOS15.1 UITableViewCell 错乱问题

iOS UITableViewCell点击时子视图背景透明的解决方法

添加 UITextField 作为 UITableViewCell 的子视图在 IOS 6 中工作正常,但在 IOS 7 中它不起作用?