我经常遇到类似view.addSubview(myAwesomeTableView)
的内容。
显然,自动布局中没有设置约束。那么系统如何确定myAwesomeTableView
的放置方式和位置。它会简单地匹配父视图的大小吗?
translatesAutoresizingMaskIntoConstraints
与此有什么关系?
答案 0 :(得分:2)
默认情况下,每个UIView
的框架都是CGRect.zero
。
如果启用了translatesAutoresizingMaskIntoConstraints
(默认情况下已启用),则可以使用autoresizingMask
,系统会为您生成约束。
答案 1 :(得分:2)
那么系统如何确定如何以及在何处放置 myAwesomeTableView。它会简单地匹配父视图的大小吗?
基本上,它取决于myAwesomeTableView
(子视图)frame。添加子视图时,它会自动添加到(0,0)原点,因此子视图框将为:
x: 0
y: 0
width: subview width.
height: subview height.
请注意,如果未确定子视图帧,则默认情况下宽度和高度为0.
translatesAutoresizingMaskIntoConstraints
必须做什么 这个?
改编自translatesAutoresizingMaskIntoConstraints
文档:
一个布尔值,用于确定视图的自动调整遮罩 被转换为自动布局约束。
这意味着系统会创建一组约束来复制视图自动调整掩码指定的行为,您可以通过编辑其帧值直接修改所需的视图位置(原点)和大小。
请注意:
默认情况下,对于您的任何视图,该属性都设置为true 以编程方式创建。如果在Interface Builder中添加视图,则 系统自动将此属性设置为false。
在以编程方式向视图添加约束时,请注意您必须将translatesAutoresizingMaskIntoConstraints
设置为false
:
myView.translatesAutoresizingMaskIntoConstraints = false
意味着"我将自己处理视图的约束"否则不会激活添加的约束。
此外,您可能需要检查: