【发布时间】:2018-11-14 15:54:25
【问题描述】:
据我所知,翻译自动调整大小蒙版会限制它允许我以编程方式设置视图框架
我只是将 translatesAutoresizingMaskIntoConstraints 设置为 true,为什么约束会抱怨?
【问题讨论】:
据我所知,翻译自动调整大小蒙版会限制它允许我以编程方式设置视图框架
我只是将 translatesAutoresizingMaskIntoConstraints 设置为 true,为什么约束会抱怨?
【问题讨论】:
translatesAutoresizingMaskIntoConstraints = true 它告诉自动布局将框架设置和 .autoresizingMask 属性转换为约束。 为什么会出现这个警告? 因为这条线将框架布局转换为约束,在这种情况下,编译器已经删除了所有旧约束并开始转换框架以约束它以仅找到高度约束 X, Y 仍然需要有两个约束才能消除警告 您仍然必须提供有效的帧以避免冲突/破坏约束警告。
【讨论】:
你需要
translatesAutoresizingMaskIntoConstraints = false
当您在代码中创建约束时,此属性应为 false ,如果为 true 则会添加其他约束,请参阅Docs
如果此属性的值为 true,系统会创建一组约束,这些约束复制视图的自动调整掩码指定的行为。这还允许您使用视图的框架、边界或中心属性修改视图的大小和位置,从而允许您在自动布局中创建基于框架的静态布局。
请注意,自动调整掩码约束完全指定了视图的大小和位置;因此,您不能添加额外的约束来修改此大小或位置而不引入冲突。如果要使用 Auto Layout 动态计算视图的大小和位置,则必须将此属性设置为 false,然后为视图提供一组明确、不冲突的约束。
默认情况下,对于您以编程方式创建的任何视图,该属性都设置为 true。如果在 Interface Builder 中添加视图,系统会自动将此属性设置为 false。
【讨论】:
设置. translatesAutoresizingMaskIntoConstraints = true 确实不禁用自动布局。
它告诉自动布局将框架设置和.autoresizingMask 属性翻译为约束。
您仍然必须提供有效帧以避免冲突/破坏约束警告。
【讨论】: