【问题标题】:Mysterious value introduced by NSAutoresizingMaskLayoutConstraint set by AutoLayout systemAutoLayout系统设置的NSAutoresizingMaskLayoutConstraint引入的神秘值
【发布时间】:2019-05-16 08:55:32
【问题描述】:

AutoLayout 正在添加一个导致冲突的 NSAutoresizingMaskLayoutConstraint,目前还不清楚在哪里以及如何。

问题是:293的高度从何而来?

UIView 层次结构:

AutoLayout 日志已编号。 Xcode 标签未显示在 AutoLayout 日志中。

第 1 行似乎是个麻烦。根据约束,这似乎是Post View Cell,这是一个自定义的UICollectionViewCell

然而sizeForItemAt UICollectionViewDelegate 函数没有返回这个值。如果您将返回值硬编码为 CGSize(width: 300, height: 100) 之类的内容,则 293 仍会出现在日志中。

那么 293 是从哪里来的?

第 2 行是代码中的约束集,这是正确的值。这个视图应该是Attachment View

第 3 行和第 4 行引用Post Content View,即UIStackView

第 5 行指的是Text View

第 6 行指的是Attachment View

第 7 行是UIStackView (Post Content View) 设置的间距。

1. "<NSAutoresizingMaskLayoutConstraint:0x600002a47610 h=--& v=--& UIView:0x7facf0e126b0.height == 293   (active)>",
2. "<NSLayoutConstraint:0x600002a79a40 UIView:0x7facf0e07110.height == 280   (active)>",
3. "<NSLayoutConstraint:0x600002a785a0 V:[UIStackView:0x7facf0e12890]-(10)-|   (active, names: '|':UIView:0x7facf0e126b0 )>",
4. "<NSLayoutConstraint:0x600002a79180 V:|-(10)-[UIStackView:0x7facf0e12890]   (active, names: '|':UIView:0x7facf0e126b0 )>",
5. "<NSLayoutConstraint:0x600002a7cff0 'UISV-canvas-connection' UIStackView:0x7facf0e12890.top == UITextView:0x7facf283a600'hi'.top   (active)>",
6. "<NSLayoutConstraint:0x600002a7cf00 'UISV-canvas-connection' V:[UIView:0x7facf0e07110]-(0)-|   (active, names: '|':UIStackView:0x7facf0e12890 )>",
7. "<NSLayoutConstraint:0x600002a7d270 'UISV-spacing' V:[UITextView:0x7facf283a600'hi']-(5)-[UIView:0x7facf0e07110]   (active)>"


Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x600002a79a40 UIView:0x7facf0e07110.height == 280   (active)>

【问题讨论】:

  • 嘿@crashalot,你找到解决方案了吗?我也遇到了类似的问题

标签: ios autolayout storyboard nslayoutconstraint


【解决方案1】:

只要你有一个translatesAutoresizingMaskIntoConstraintstrue 的视图(不幸的是,这是你在代码中创建视图时的默认值),就会出现NSAutoresizingMaskLayoutConstraint。确保不是这种情况。

【讨论】:

  • 感谢您的回复!是的,我们已经检查了这个条件。还有其他潜在原因吗?
  • 没有关于如何重现问题的详细信息,我不能更具体,抱歉。您可以使用 Instruments 获得有关如何创建约束的完整信息,或者更简单的是,您可以使用 View Debugger 查看冲突的核心。
  • OK 将尝试简化问题并发布代码以重现问题。感谢您的帮助!
  • 感谢您的建议。当 AutoLayout 创建 NSAutoresizingMaskLayoutConstraint 约束时,View Debugger 会显示?
  • 另外,如果将view2添加到view1,我们只需要将view2的translatesAutoresizingMaskIntoConstraints设置为false,对吧?不是 view1 和 view2。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多