
我们查看官方文档,可以看到文档是这样介绍该属性的:它是一个用来决定,是否将视图的自动调整大小的遮罩(autoresizing mask)转换为 Auto Layout 约束的布尔值。
通过文档介绍我们可以得知:当该属性为 true 时,系统会自动通过视图的 autoresizing mask 创建一组视图的约束,这些约束是基于你提供的 frame、bounds、center 这些属性。也就是说,当你给视图的 frame 赋值之后,它会为你创建静态的、基于 frame 的 Auto Layout 约束。如下:
属性值为 true且指定 frame
|
复制代码在上述情况中,你是不能给视图添加额外的约束来修改它的位置或大小的,如果添加额外的约束会导致约束冲突。如下:
属性值为 true,指定 frame 且添加额外约束
|
复制代码错误提示如下图所示:
添加额外约束导致约束冲突
如果你想使用 Auto Layout 动态计算、改变视图尺寸的话,你必须将该属性值改为 false 。然后你只需提供无歧义、无冲突的约束即可。如例 1-3 代码所示:
例 1-3 属性值为 false
|
复制代码当你代码创建视图时,视图的 translatesAutoresizingMaskIntoConstraints 默认为 true,当你使用 Interface Builder 时,系统会自动将 translatesAutoresizingMaskIntoConstraints 的值设为 false。
总结
代码创建视图时,视图的 translatesAutoresizingMaskIntoConstraints 属性值默认为 true
Interface Builder 中创建视图时,系统会自动将视图的 translatesAutoresizingMaskIntoConstraints 属性值设为 false
代码创建的视图,且使用 frame 进行布局时,不能添加额外的约束,会导致约束冲突
代码创建的视图,且使用 Auto Layout 进行布局时,需将属性值设为 false
参考
translatesAutoresizingMaskIntoConstraints
When should translatesAutoresizingMaskIntoConstraints be set to true?
- Post title:translatesAutoresizingMaskIntoConstraints
- Post author:ChenghuiBai
- Create time:2018-05-03 21:35:09
- Post link:https://baichenghui.github.io/2018/05/03/translatesAutoresizingMaskIntoConstraints/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.