在使用类似于自动布局约束的概念的机械CAD软件中,您通常可以添加“派生约束”。这对布局没有影响,但允许您直接读取重要维度的值。
例如,请考虑具有两个子视图的视图的以下布局:
32 64
|------| |------|
|-[imgOne]-[imgTwo]-|
|-------------------|
w
视图的宽度是左侧和右侧的默认边距,图像视图之间的默认间距以及应用于图像视图的两个宽度约束(32和64)之和。
我想在运行时知道w
。
理论上,这应该是view.bounds
。但是,读取该属性并不总是安全的(因为视图可能尚未更新其布局约束)。
是否可以添加一个对视图大小没有影响但在布局完成后会更新.constant
属性的约束?
(我尝试向视图添加宽度约束,优先级为1
,但.constant
始终读取标称值,而不是实际值。)
答案 0 :(得分:0)
添加“派生”约束会使您进入与开始时相同的洞 - 等待自动布局完成布局视图。这都是关于时间的。使用自动布局时,可以在视图控制器的viewDidLayoutSubviews方法中查看视图的最终几何图形。换句话说,在viewDidLayoutSubviews中读取视图的边界。