当我将“translatesAutoresizingMaskIntoConstraints”设置为 true、ChangeSizesInRunTime 时,为啥会出现约束中断?

Posted

技术标签:

【中文标题】当我将“translatesAutoresizingMaskIntoConstraints”设置为 true、ChangeSizesInRunTime 时,为啥会出现约束中断?【英文标题】:Why Constrains Break when I just set "translatesAutoresizingMaskIntoConstraints" to true, ChangeSizesInRunTime?当我将“translatesAutoresizingMaskIntoConstraints”设置为 true、ChangeSizesInRunTime 时,为什么会出现约束中断? 【发布时间】:2018-11-14 15:54:25 【问题描述】:

据我所知,翻译自动调整大小蒙版会限制它允许我以编程方式设置视图框架

我只是将 translatesAutoresizingMaskIntoConstraints 设置为 true,为什么约束会抱怨?

【问题讨论】:

When should translatesAutoresizingMaskIntoConstraints be set to true?的可能重复 【参考方案1】:

translatesAutoresizingMaskIntoConstraints = true 它告诉自动布局将框架设置和 .autoresizingMask 属性转换为约束。 为什么会出现这个警告? 因为这条线将框架布局转换为约束,在这种情况下,编译器已经删除了所有旧约束并开始转换框架以约束它以仅找到高度约束 X, Y 仍然需要有两个约束才能消除警告 您仍然必须提供有效的帧以避免冲突/破坏约束警告。

【讨论】:

【参考方案2】:

你需要

translatesAutoresizingMaskIntoConstraints = false

当您在代码中创建约束时,此属性应为 false ,如果为 true 则会添加其他约束,请参阅Docs

如果此属性的值为 true,系统会创建一组约束,这些约束复制视图的自动调整掩码指定的行为。这还允许您使用视图的框架、边界或中心属性修改视图的大小和位置,从而允许您在自动布局中创建基于框架的静态布局。

请注意,自动调整掩码约束完全指定了视图的大小和位置;因此,您不能添加额外的约束来修改此大小或位置而不引入冲突。如果要使用 Auto Layout 动态计算视图的大小和位置,则必须将此属性设置为 false,然后为视图提供一组明确、不冲突的约束。

默认情况下,对于您以编程方式创建的任何视图,该属性都设置为 true。如果在 Interface Builder 中添加视图,系统会自动将此属性设置为 false。

【讨论】:

【参考方案3】:

设置. translatesAutoresizingMaskIntoConstraints = true 确实禁用自动布局。

它告诉自动布局将框架设置和.autoresizingMask 属性翻译为约束。

您仍然必须提供有效帧以避免冲突/破坏约束警告。

【讨论】:

以上是关于当我将“translatesAutoresizingMaskIntoConstraints”设置为 true、ChangeSizesInRunTime 时,为啥会出现约束中断?的主要内容,如果未能解决你的问题,请参考以下文章

当我将 HTML 放入“包含”中时,为啥我的 javascript 不起作用?

为啥当我将 SKSpriteNode 与图像一起使用时它不会反弹,但当我使用 SKShapeNode 时它确实有效?

当我将视频播放到 Recyclerview 内的 VideoView 时,当我滚动时,它会在 x 轴上旋转

当我将空值视为这样的数组时,为啥 PHP 不会抱怨?

当我将 IterativeImputer 与 KNeighborsClassifier 一起使用时出现错误“未知标签类型:'连续'”

为啥当我将整个网站上传到虚拟主机时会扩展?