Swift UICollectionViewCell 上的 NSAutoresizingMaskLayoutConstraint 发出警告但布局正常
Swift NSAutoresizingMaskLayoutConstraint on a UICollectionViewCell gives warning but layout works fine
我正在使用具有自定义布局的 UICollectionVewCell,其中不同单元格的高度因单元格而异。我使用了这里描述的方法
https://www.raywenderlich.com/107439/uicollectionview-custom-layout-tutorial-pinterest
我已经在情节提要中设置了单元格,所有的约束条件似乎彼此都很满意。当我 运行 代码时,我得到了我想要的单元格布局。没问题。
问题是我在日志中看到一个 NSAutoresizingMaskLayoutConstraint 似乎与我自己设置的约束冲突。 NSAutoresizingMaskLayoutConstraint 是 xcode 自己添加的东西。此约束由 xcode 自动放置在 CollectionViewCell 自己的内容视图上(此内容视图仅在视图层次结构中可见,而不在文档大纲中可见)。
2017-02-19 21:54:28.999546 TestProject[6612:395125] [LayoutConstraints] 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)
(
"",
"",
"",
"",
"",
"",
“”
)
将尝试通过打破约束来恢复
在 UIViewAlertForUnsatisfiableConstraints 创建一个符号断点以在调试器中捕获它。
我看到很多其他人也有类似的问题,但是按照这些帖子并尝试那里列出的所有解决方案并没有帮助我摆脱这个 error/conflict 的限制。我尝试关注的一些帖子是
Unable to simultaneously satisfy constraints, will attempt to recover by breaking constraint
How to trap on UIViewAlertForUnsatisfiableConstraints?
几乎接近修复它但并非完全修复它的解决方案之一是将约束的优先级更改为 999。但这会增加看起来不太好的小空洞。
关于如何删除此 NSAutoresizingMaskLayoutConstraint 警告而无需更改我手动设置的约束的任何建议?
谢谢。
我意识到这是很久以前的事了,但我发布此评论主要是为了将来寻求帮助的人。
我最近在使用具有动态高度的 UICollectionViewCell 子类和 NSAutoresizingMaskLayoutConstraint 时遇到了一些问题,并且还仔细阅读了您提到的其他链接但没有成功。
在我的例子中,我有两个子视图:子视图 A 固定到超级视图。top/left/right,然后固定底部到子视图 B,它被固定到超级视图。left/right/bottom。我已经为 A 和 B 提供了明确的高度值(height = 50 和 height = 300,诸如此类),在那种情况下我遇到了和你一样的事情 - 关于不能同时存在的约束的自动布局错误满意,但布局本身最终还是不错的。
最后,我删除了子视图 A 的高度限制,而是以不同的方式布局,仍然让它保持适当的高度(我在其中有一个标签,所以我固定了标签的 top/bottom 间距,而不是明确固定 A 的高度)。当我仍然能够保持我需要的布局时,控制台错误消失了。所以我不知道为什么,但对我来说,当从单元格的顶部到底部一直存在明确的高度时,错误就会发生。将其更改为通过间距约束而不是高度约束来固定一个或多个视图似乎效果更好。
(对于其他人在未来拼命搜索的奖励跟进:我后来尝试通过更改其高度约束常量来调整子视图 B 的大小,这再次导致控制台错误但布局正确。在这种情况下,然后,将子视图 B 的高度限制的优先级更改为 999 允许错误消失。)
我正在使用具有自定义布局的 UICollectionVewCell,其中不同单元格的高度因单元格而异。我使用了这里描述的方法 https://www.raywenderlich.com/107439/uicollectionview-custom-layout-tutorial-pinterest
我已经在情节提要中设置了单元格,所有的约束条件似乎彼此都很满意。当我 运行 代码时,我得到了我想要的单元格布局。没问题。
问题是我在日志中看到一个 NSAutoresizingMaskLayoutConstraint 似乎与我自己设置的约束冲突。 NSAutoresizingMaskLayoutConstraint 是 xcode 自己添加的东西。此约束由 xcode 自动放置在 CollectionViewCell 自己的内容视图上(此内容视图仅在视图层次结构中可见,而不在文档大纲中可见)。
2017-02-19 21:54:28.999546 TestProject[6612:395125] [LayoutConstraints] 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)
( "", "", "", "", "", "", “” )
将尝试通过打破约束来恢复
在 UIViewAlertForUnsatisfiableConstraints 创建一个符号断点以在调试器中捕获它。
我看到很多其他人也有类似的问题,但是按照这些帖子并尝试那里列出的所有解决方案并没有帮助我摆脱这个 error/conflict 的限制。我尝试关注的一些帖子是 Unable to simultaneously satisfy constraints, will attempt to recover by breaking constraint How to trap on UIViewAlertForUnsatisfiableConstraints?
几乎接近修复它但并非完全修复它的解决方案之一是将约束的优先级更改为 999。但这会增加看起来不太好的小空洞。
关于如何删除此 NSAutoresizingMaskLayoutConstraint 警告而无需更改我手动设置的约束的任何建议?
谢谢。
我意识到这是很久以前的事了,但我发布此评论主要是为了将来寻求帮助的人。
我最近在使用具有动态高度的 UICollectionViewCell 子类和 NSAutoresizingMaskLayoutConstraint 时遇到了一些问题,并且还仔细阅读了您提到的其他链接但没有成功。
在我的例子中,我有两个子视图:子视图 A 固定到超级视图。top/left/right,然后固定底部到子视图 B,它被固定到超级视图。left/right/bottom。我已经为 A 和 B 提供了明确的高度值(height = 50 和 height = 300,诸如此类),在那种情况下我遇到了和你一样的事情 - 关于不能同时存在的约束的自动布局错误满意,但布局本身最终还是不错的。
最后,我删除了子视图 A 的高度限制,而是以不同的方式布局,仍然让它保持适当的高度(我在其中有一个标签,所以我固定了标签的 top/bottom 间距,而不是明确固定 A 的高度)。当我仍然能够保持我需要的布局时,控制台错误消失了。所以我不知道为什么,但对我来说,当从单元格的顶部到底部一直存在明确的高度时,错误就会发生。将其更改为通过间距约束而不是高度约束来固定一个或多个视图似乎效果更好。
(对于其他人在未来拼命搜索的奖励跟进:我后来尝试通过更改其高度约束常量来调整子视图 B 的大小,这再次导致控制台错误但布局正确。在这种情况下,然后,将子视图 B 的高度限制的优先级更改为 999 允许错误消失。)