Ios 阻止界面生成器自动创建约束?

Ios 阻止界面生成器自动创建约束?,ios,autolayout,interface-builder,nslayoutconstraint,xcode-storyboard,Ios,Autolayout,Interface Builder,Nslayoutconstraint,Xcode Storyboard,我创建了一个演示项目。我有一个在.xib文件中创建滚动视图的视图。在interface builder中,我没有设置任何约束。在我的viewDidLoad方法中,我使用以下设置约束: 当我运行代码时,我得到以下控制台输出: 无法同时满足约束。 可能下面列表中至少有一个约束是您不想要的。试着这样做:(1)看看每个约束,试着找出你不期望的约束;(2) 找到添加了不需要的约束的代码,然后修复它。(注意:如果您看到不理解的NSAutoresizingMaskLayoutConstraints,请参阅UI

我创建了一个演示项目。我有一个在.xib文件中创建滚动视图的视图。在interface builder中,我没有设置任何约束。在我的viewDidLoad方法中,我使用以下设置约束:

当我运行代码时,我得到以下控制台输出:

无法同时满足约束。
可能下面列表中至少有一个约束是您不想要的。试着这样做:(1)看看每个约束,试着找出你不期望的约束;(2) 找到添加了不需要的约束的代码,然后修复它。(注意:如果您看到不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性TranslatesAutoResizingMaskToConstraints的文档)
(
"",
""
)
将尝试通过打破约束进行恢复
在objc_异常_抛出时中断,以便在调试器中捕获该异常。
中列出的UIView上UIConstraintBasedLayoutDebugging类别中的方法也可能会有所帮助。
2015-05-29 18:37:14.368设备映像测试[36462:607]无法同时满足约束。
可能下面列表中至少有一个约束是您不想要的。试着这样做:(1)看看每个约束,试着找出你不期望的约束;(2) 找到添加了不需要的约束的代码,然后修复它。(注意:如果您看到不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性TranslatesAutoResizingMaskToConstraints的文档)
(
"",
"",
"",
"",
"",
"",
"",
""
)
将尝试通过打破约束进行恢复
在objc_异常_抛出时中断,以便在调试器中捕获该异常。
中列出的UIView上UIConstraintBasedLayoutDebugging类别中的方法也可能会有所帮助。
2015-05-29 18:37:14.496设备映像测试[36462:607]无法同时满足约束。
可能下面列表中至少有一个约束是您不想要的。试着这样做:(1)看看每个约束,试着找出你不期望的约束;(2) 找到添加了不需要的约束的代码,然后修复它。(注意:如果您看到不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性TranslatesAutoResizingMaskToConstraints的文档)
(
"",
"",
"",
"",
"",
"",
"",
""
)
将尝试通过打破约束进行恢复
在objc_异常_抛出时中断,以便在调试器中捕获该异常。
中列出的UIView上UIConstraintBasedLayoutDebugging类别中的方法也可能会有所帮助。
界面生成器似乎正在为我生成约束,即使我没有设置任何约束。这会导致与我在代码中设置的约束冲突。我还设置了
setTranslatesAutoResizengMasks(false)

如何防止Interface Builder自动生成约束?

如何防止Interface Builder自动生成约束


最简单的方法:在项目导航器中选择nib或故事板,转到文件检查器,然后取消选中“使用自动布局”。

如果您对该列表中的NSAutoResizengMaskLayoutConstraints(NSAutoResizengMaskLayoutConstraints)约束感到困惑,可能是因为您没有在该视图上调用
setTranslatesAutoResizengMaskSintoConstraints(false)
。(尽管如此,我的印象是SnapKit会为你做这件事)


如果您对
NSIBPrototypingLayoutConstraint
感到困惑,则这是Interface Builder自动生成的约束。要消除它,请在Interface Builder中添加一些顶部、底部、前导和尾随约束,并将它们设置为在生成时删除。有关这方面的更多详细信息,请查看


更新:如果您在情节提要中未设置任何约束,则url已更改为

,然后在代码中,
scrollview。设置TranslatesAutoResizengMaskinToConstraints(false)
我使用的是interface builder而不是情节提要,我已经设置了
设置TranslatesAutoResizengMasks(false)
请继续。我们只是在nib中改变自动布局行为,这正是您想要做的。您仍然可以在代码中使用它。试试看!不是那样的。你可以查看我的示例,我仍然收到警告。不,你说的是:NSAutoresizingMaskLayoutConstraint。这是因为您忘了
将TranslatesAutoResizengMask设置为Containts(false)
。我说的是:NSIBPrototypingLayoutConstraint。这就是你问的。如果你关闭nib中的自动布局,这些都是可以避免的。我还是不明白。我的示例中有什么错误:您使用的是第三方库SnapKit。我不做那种事。这只是你和现实之间的另一层混乱。我向你保证我说的是真的;我总是这样做。
scrollView.snp_makeConstraints { (make) -> Void in
  make.edges.equalTo(self.view)
}