我对视图的对齐矩形属性与相同视图的帧属性之间的关系仍然有点模糊。
我知道作为开发人员,我们可以直接在代码中更改对齐矩形属性,并且我们可以通过界面构建器中的约束来操作它。我也知道(或者我认为我知道)对齐矩形属性比CGRect有更多的值,即Top,Left,Right,Bottom,Leading,Trailing,Baseline等......
我不明白这两者是如何在一个视图中共同发挥作用的。
当您查看对其有约束的视图时,比如说UILabel,原来的CGRect框架属性是否已被使用?或者为该视图接管了Alignment矩形属性(使其响应并在运行时计算宽度/高度/原点位置)?
本书建议很少使用视图,其中框架是一个简单的CGRect对象,具有x和y原点,以及固定的宽度/高度,而是使用与视图对齐有关的约束矩形属性。
所以基本上......我有一个标签,你已经设置了约束,框架现在响应',视图的框架属性是否仍在使用?如果是这样,如何以及为什么?
由于
答案 0 :(得分:3)
视图的框架低于自动布局。框架存储视图占据的矩形;那就是它。在绘制视图,处理触摸等时,UIKit使用视图的框架。框架是视图的当前位置和大小;没有别的。
自动布局设置视图的框架。如果使用“自动布局”为视图指定约束,“自动布局”将计算视图应具有的框架,并在运行时将该框架设置为frame
属性。
自动布局由UIView
layoutSubviews()
which runs when the view is added as a subview or its size is changed运行。您可以自己设置frame
,但下次layoutSubviews()
运行时,它会被自动布局重置。