当我仅将“ translatesAutoresizingMaskIntoConstraints”设置为True,ChangeSizesInRunTime时,为什么约束会中断?

时间:2018-11-14 15:54:25

标签: ios swift

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

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

3 个答案:

答案 0 :(得分:1)

您需要

translatesAutoresizingMaskIntoConstraints = false

当您在代码中创建约束时,此属性应为false,就好像该属性将添加其他约束一样,请参见Docs

  

如果此属性的值为true,则系统将创建一组约束,这些约束将复制视图的自动调整大小蒙版指定的行为。这也使您可以使用视图的框架,边界或中心属性来修改视图的大小和位置,从而可以在“自动布局”中创建基于框架的静态布局。

     

请注意,自动调整大小的蒙版约束完全指定了视图的大小和位置;因此,在不引入冲突的情况下,您不能添加其他约束来修改此大小或位置。如果要使用“自动布局”来动态计算视图的大小和位置,则必须将此属性设置为false,然后为视图提供一组无歧义,无冲突的约束。

     

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

答案 1 :(得分:1)

设置. translatesAutoresizingMaskIntoConstraints = true不会禁用自动布局。

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

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

答案 2 :(得分:1)

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