必须将 autoresizing 掩码转换为约束以具有 _setHostsLayoutEngine:YES Xcode 13
Must translate autoresizing mask into constraints to have _setHostsLayoutEngine:YES Xcode 13
我已将我的项目更新为 Xcode 13 和 iOS 15。现在应用程序崩溃并出现与 UITableViewCells 中自动调整掩码大小相关的错误。我试图将检查器中的 UITableViewCells 层 属性 更改为推断并遵循 this post,但其中 none 正在工作。
你遇到过这个问题吗。如何解决?
以下是有关错误的一些信息:
Interface Builder Config Image
override func awakeFromNib() {
super.awakeFromNib()
selectionStyle = .none
setupEventAction()
configureAccessibilityForCellItem()
}
override func prepareForReuse() {
super.prepareForReuse()
eventView.eventImageView.image = nil
}
func configureAnnouncement(announcement: AnnouncementsRowItem, isWhiteCell: Bool = false) {
eventView.isHidden = announcement.event == nil
eventView.backgroundView.backgroundColor = isWhiteCell ? R.color.basic1_bg() : R.color.basic2_bg()
if announcement.event?.eventID.isEmpty ?? false || !isWhiteCell {
self.backgroundColor = R.color.basic2_bg()
}
bubbleView.configureAnnouncementsBubbleView(announcement: announcement)
eventView.configureAnnouncementsEventView(announcement: announcement)
layoutIfNeeded()
}
private func setupEventAction() {
eventView.isUserInteractionEnabled = true
let gesture = UITapGestureRecognizer(target: self, action: #selector(showEvent))
gesture.numberOfTapsRequired = 1
eventView.addGestureRecognizer(gesture)
}
@objc
func showEvent() {
openEventClicked?()
}
谢谢
我也遇到过同样的问题。
尝试以下:
打开 UITableViewCell 的 *.xib 作为源代码(上下文菜单/“打开为”/“源代码”)。
找到“tableViewCell”和“tableViewCellContentView”标签,删除其“translatesAutoresizingMaskIntoConstraints”属性(带值),删除其子标签“autoresizingMask”(如果存在)。
https://i.stack.imgur.com/bDSJ3.png
删除“tableViewCell”的“translatesAutoresizingMaskIntoConstraints”对我有用,但“autoresizingMask”留在那里,因为它们是由 XCode 再次自动添加的。
同样的事情发生在我身上 xCode 13.0 only iOS 15(之前的 iOS 版本没有任何问题)。
要解决此问题,请确保您的单元格内容视图在尺寸检查器下设置为 Layout: Autoresizing Mask(而不是 Inferred(Constrains)),如下所示图片:
Autoresizing Mask
我认为这与 Xcode 13 有关,而且特别针对 xib 文件中的单元格。对我来说,它第一次在 Xcode 13.2.1 上崩溃。以前我用过几个版本的 Xcode 12,它从来没有崩溃过。
我在 xib
中的单元格 Content View
已经设置为 Autoresizing Mask
,但单元格本身的布局设置为 Inferred(Constraints)
。所以我将其更改为 Autoresizing Mask
并停止崩溃。
将 Content View
布局设置为 Autoresizing Mask
将 Cell
布局设置为 Autoresizing Mask
将 TableViewCell 和 ContentView 的布局更改为“Autoresizing Mask”。如果它仍然被选中,请尝试更改为“推断约束”并返回到“自动调整掩码”。
尝试在最新的Xcode中打开xib文件,再次保存Xcode和运行所做的更改。
重要 - 检查 tableView 单元格名称和单元格内子视图的名称是否不同。由于子视图具有相同的名称但布局设置不同,应用程序将崩溃。 (旧 Xcode 版本在这种情况下工作正常)。
问题可在 Xcode 13.1/13.2 和 iOS 15.*
上重现
我的问题已通过其他解决方案解决,但错误相同,原因不同。我的单元格内的视图被分配了与单元格相同的 class,通过删除 class 错误得到解决。
如果您在 UITableViewCell
中插入 UITableViewCell
,也会发生这种情况。我正在加载一个我没有意识到的自定义视图 UITableViewCell
- 出于某种原因,我认为它只是一个常规的 UIView
.
我已将我的项目更新为 Xcode 13 和 iOS 15。现在应用程序崩溃并出现与 UITableViewCells 中自动调整掩码大小相关的错误。我试图将检查器中的 UITableViewCells 层 属性 更改为推断并遵循 this post,但其中 none 正在工作。
你遇到过这个问题吗。如何解决?
以下是有关错误的一些信息:
Interface Builder Config Image
override func awakeFromNib() {
super.awakeFromNib()
selectionStyle = .none
setupEventAction()
configureAccessibilityForCellItem()
}
override func prepareForReuse() {
super.prepareForReuse()
eventView.eventImageView.image = nil
}
func configureAnnouncement(announcement: AnnouncementsRowItem, isWhiteCell: Bool = false) {
eventView.isHidden = announcement.event == nil
eventView.backgroundView.backgroundColor = isWhiteCell ? R.color.basic1_bg() : R.color.basic2_bg()
if announcement.event?.eventID.isEmpty ?? false || !isWhiteCell {
self.backgroundColor = R.color.basic2_bg()
}
bubbleView.configureAnnouncementsBubbleView(announcement: announcement)
eventView.configureAnnouncementsEventView(announcement: announcement)
layoutIfNeeded()
}
private func setupEventAction() {
eventView.isUserInteractionEnabled = true
let gesture = UITapGestureRecognizer(target: self, action: #selector(showEvent))
gesture.numberOfTapsRequired = 1
eventView.addGestureRecognizer(gesture)
}
@objc
func showEvent() {
openEventClicked?()
}
谢谢
我也遇到过同样的问题。 尝试以下: 打开 UITableViewCell 的 *.xib 作为源代码(上下文菜单/“打开为”/“源代码”)。 找到“tableViewCell”和“tableViewCellContentView”标签,删除其“translatesAutoresizingMaskIntoConstraints”属性(带值),删除其子标签“autoresizingMask”(如果存在)。
https://i.stack.imgur.com/bDSJ3.png
删除“tableViewCell”的“translatesAutoresizingMaskIntoConstraints”对我有用,但“autoresizingMask”留在那里,因为它们是由 XCode 再次自动添加的。
同样的事情发生在我身上 xCode 13.0 only iOS 15(之前的 iOS 版本没有任何问题)。
要解决此问题,请确保您的单元格内容视图在尺寸检查器下设置为 Layout: Autoresizing Mask(而不是 Inferred(Constrains)),如下所示图片: Autoresizing Mask
我认为这与 Xcode 13 有关,而且特别针对 xib 文件中的单元格。对我来说,它第一次在 Xcode 13.2.1 上崩溃。以前我用过几个版本的 Xcode 12,它从来没有崩溃过。
我在 xib
中的单元格 Content View
已经设置为 Autoresizing Mask
,但单元格本身的布局设置为 Inferred(Constraints)
。所以我将其更改为 Autoresizing Mask
并停止崩溃。
将
Content View
布局设置为Autoresizing Mask
将
Cell
布局设置为Autoresizing Mask
将 TableViewCell 和 ContentView 的布局更改为“Autoresizing Mask”。如果它仍然被选中,请尝试更改为“推断约束”并返回到“自动调整掩码”。
尝试在最新的Xcode中打开xib文件,再次保存Xcode和运行所做的更改。
重要 - 检查 tableView 单元格名称和单元格内子视图的名称是否不同。由于子视图具有相同的名称但布局设置不同,应用程序将崩溃。 (旧 Xcode 版本在这种情况下工作正常)。
问题可在 Xcode 13.1/13.2 和 iOS 15.*
上重现我的问题已通过其他解决方案解决,但错误相同,原因不同。我的单元格内的视图被分配了与单元格相同的 class,通过删除 class 错误得到解决。
如果您在 UITableViewCell
中插入 UITableViewCell
,也会发生这种情况。我正在加载一个我没有意识到的自定义视图 UITableViewCell
- 出于某种原因,我认为它只是一个常规的 UIView
.