gpt4 book ai didi

ios - iOS6 自动布局异常

转载 作者:行者123 更新时间:2023-11-29 03:19:29 24 4
gpt4 key购买 nike

我目前正在使用带有自动布局的 xib 在 Collection View 中创建自定义单元格。对于两个方向,我都有不同的单元格大小。因此,我根据方向更改单元格的宽度和高度。

问题是,当我改变设备方向时,我在 iOS6 中收到大量警告/异常。

但是,当我在 iOS7 中执行相同操作时,不会出现任何警告。

虽然这不会影响我的功能,但我想删除所有这些警告。

这是我的 XIB file

以下是我收到的错误/警告/异常。

Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x164371f0 V:[UILabel:0x16437240(21)]>",
"<NSLayoutConstraint:0x16438050 V:[UILabel:0x16437240]-(1)-[UILabel:0x16437670]>",
"<NSLayoutConstraint:0x16437fd0 V:[UILabel:0x16437670]-(5)-| (Names: '|':LibraryCollectionViewCell:0x16436ae0 )>",
"<NSLayoutConstraint:0x16437f50 V:[UILabel:0x16436e10]-(0)-[UILabel:0x16437240]>",
"<NSLayoutConstraint:0x16437e90 V:|-(7)-[UILabel:0x16436e10] (Names: '|':LibraryCollectionViewCell:0x16436ae0 )>",
"<NSAutoresizingMaskLayoutConstraint:0x16354d00 h=--& v=--& V:[UICollectionView:0xb24f200(264)]>",
"<NSAutoresizingMaskLayoutConstraint:0x163513b0 h=-&- v=-&- LibraryCollectionViewCell:0x16436ae0.height == UICollectionView:0xb24f200.height - 264>"
)

Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x164371f0 V:[UILabel:0x16437240(21)]>

Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

我已经尝试过 [cell setTranslatesAutoresizingMaskIntoConstraints:NO] 但它反而让应用程序崩溃了。

有人可以提供一些解决方案吗?

最佳答案

"<NSLayoutConstraint:0x164371f0 V:[UILabel:0x16437240(21)]>",
"<NSLayoutConstraint:0x16438050 V:[UILabel:0x16437240]-(1)-[UILabel:0x16437670]>",
"<NSLayoutConstraint:0x16437fd0 V:[UILabel:0x16437670]-(5)-| (Names: '|':LibraryCollectionViewCell:0x16436ae0 )>",
"<NSLayoutConstraint:0x16437f50 V:[UILabel:0x16436e10]-(0)-[UILabel:0x16437240]>",
"<NSLayoutConstraint:0x16437e90 V:|-(7)-[UILabel:0x16436e10] (Names: '|':LibraryCollectionViewCell:0x16436ae0 )>",
"<NSAutoresizingMaskLayoutConstraint:0x16354d00 h=--& v=--& V:[UICollectionView:0xb24f200(264)]>",
"<NSAutoresizingMaskLayoutConstraint:0x163513b0 h=-&- v=-&- LibraryCollectionViewCell:0x16436ae0.height == UICollectionView:0xb24f200.height - 264>"

好吧,从你的限制来看,你有......

(括号中的数字是引用的最后 3 位数字)。

Label (240) with height constraint fixed to 21.
Label (240) with a vertical gap of 1 to label (670).
Label (670) with a vertical gap of 5 to the superview (ae0) bottom.
Label (e10) with a vertical gap of 7 to the superview (ae0) top.

UICollectionView (200) with fixed height of 264.
LibraryCollectionViewCell (ae0) with an equal height to the collection view - 264 (200).

<亚当·萨维奇>好的!这就是你的问题!

列表中的最后一个约束将赋予单元格高度 0。(264 - 264 = 0)但是,在单元格中,您有一个固定高度为 21 且垂直间隙为 7、5 和 1 的标签。

264 - 264 = 0
21 + 7 + 5 + 1 = 36

36 != 0

您可以通过多种方式解决此问题。删除单元格和 Collection View 之间的约束。取消标签上的固定高度限制。等等...

我建议(在纸上)画出您希望它如何工作,并记下您需要的约束。或者在您的问题中添加您想要执行的操作的图片,以便我们尽力提供帮助。

关于ios - iOS6 自动布局异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21277133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com