2013-12-09 44 views
1

在使用类似于自动布局约束的概念的机械CAD软件中,通常可以添加“派生约束”。这对布局没有影响,但可以让您直接读取重要维度的值。您可以使用自动布局添加派生约束吗?

例如,考虑对一个视图如下的布局有两个子视图:

 32  64 
    |------| |------| 

|-[imgOne]-[imgTwo]-| 

|-------------------| 
      w 

视图的宽度为在左侧和右侧,图像视图之间的默认间隔的默认边缘间隔的总和,以及应用于图像视图的两个宽度约束(32和64)。

我想在运行时知道w

理论上,这应该是view.bounds。但是,读取该属性并不总是安全的(因为视图可能尚未更新其布局约束)。

是否可以添加一个约束,该约束对视图大小没有影响,但是一旦布局完成后将更新其.constant属性?

(我曾尝试添加一个宽度约束与1优先的观点,但.constant总是读,而不是实际值与标称值。)

回答

0

添加一个“衍生的”约束会把你您开始使用同一个洞 - 等待Auto Layout完成布置视图。这是关于时机。使用自动布局时,读取视图的最终几何图形的好地方是在您的视图控制器的viewDidLayoutSubviews方法中。换句话说,阅读viewDidLayoutSubviews中视图的边界。

+0

即使它确实把你放在同一个洞 - 它绝对可以,这取决于它如何实现 - 我仍然希望有一种方法来避免直接访问边界,因为这似乎是一个倒退时*其他所有*就约束而言。 – sapi