升级Xcode13和iOS15后UITableViewCell因autoresizing mask崩溃如何解决
适配Xcode13 + iOS15 UITableViewCell崩溃修复方案
- 检查视图层级:所有自定义子视图(eventView、bubbleView等)必须添加到UITableViewCell的
contentView上,所有子视图的约束都相对contentView设置。iOS15加强了cell层级校验,直接添加在cell本身的视图会触发autoresizing约束冲突。 - 显式设置autoresizing属性:在
awakeFromNib中添加配置,对齐系统默认规则:
override func awakeFromNib() { super.awakeFromNib() // 新增适配代码 contentView.autoresizingMask = [.flexibleWidth, .flexibleHeight] translatesAutoresizingMaskIntoConstraints = false // 原有逻辑保持不变 selectionStyle = .none setupEventAction() configureAccessibilityForCellItem() }
- 删除冗余布局调用:移除
configureAnnouncement方法末尾的layoutIfNeeded(),cell配置阶段强制触发布局会和iOS15的自动cell布局逻辑冲突,动态高度只需保证UITableView配置了自动高度规则即可:
// UITableView初始化时添加以下配置 tableView.rowHeight = UITableView.automaticDimension tableView.estimatedRowHeight = 80 // 替换为你的cell预估高度
- 校验xib配置:选中xib中的UITableViewCell,在大小检查器中确认
Autoresize Subviews处于勾选状态,Layer属性保持Inferred即可无需额外修改。
内容的提问来源于stack exchange,提问作者conradomateu
相关产品推荐
相关产品推荐

