iOS 15 - UITableViewCell 附件视图框架问题

Posted

技术标签:

【中文标题】iOS 15 - UITableViewCell 附件视图框架问题【英文标题】:iOS 15 - UITableViewCell accessoryView Frame issue 【发布时间】:2021-10-11 09:17:11 【问题描述】:

我有一个自定义 UIView,其中包含 UILabel 为 cell.accessoryView = containerView。它在 ios 14 之前运行良好,但从 iOS 15 开始,containerView 正在更改 tableView reload 上的框架。它在第一次加载时正确显示,但重新加载会导致 accessoryView 更改其框架。我的代码是

        let notificationLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
        
        let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
        containerView.clipsToBounds = true
        containerView.backgroundColor = .clear
        containerView.addSubview(notificationLabel!)
        
        cell.accessoryView = containerView

我正在根据 cellForRowAtIndexPath 中的 UILabel 中的文本更改容器的框架。

containerView 的框架代码似乎搞砸了。但这在 iOS 14 中运行良好。

我猜有一些变化,accessoryView 位置在 iOS 15 中是允许更改的。

有什么建议可以让它在 iOS 15 中不给出精确的 x 轴或 y 轴的情况下工作吗?

【问题讨论】:

【参考方案1】:

您看到的可能是添加到节标题的额外“默认”填充。

在你的 Viewdidload 中添加

if (@available(iOS 15.0, *)) 
       [self.tableViewName setSectionHeaderTopPadding:0.0f];
     

【讨论】:

一点也不。我已经做好了这项检查。 这对我也不起作用。【参考方案2】:

我也找不到解决方案。所以我放弃了 iOS 15 的 cell.accessoryView。

相反,我的 cellForRowAtIndexPath 处理程序调用:

[cell.contentView removeAllSubviews]
[cell.contentView addSubView:myCustomView]

【讨论】:

我仍在使用 cell.accessoryView 但我正在正确设置它的框架(原点 + 大小),这对于 iOS 15 及之前的版本非常有用。

以上是关于iOS 15 - UITableViewCell 附件视图框架问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS 13 UITableViewCell |子视图被剪掉

无法在 IOS 6 中将 UILabel 添加到 UITableViewCell

iOS9 UITableViewCell 分割线左顶头

iOS)如何添加uitableviewcell的默认分隔符

选择时 uitableviewcell 损坏(从底部看到)

自调整 UITableViewCell 不适用于右细节单元格