子视图自动布局约束可防止调整父级的大小

时间:2015-10-08 11:16:42

标签: macos swift cocoa autolayout nsview

我在父视图中有一个简单的子视图,位于距离顶部60pts处,并希望在单击按钮时将父视图的高度设置为零。 (即最终父级大小< top offset subview

...
...
<connectivity>
        <connectionPolicy xsi:type="sql:SQLConnectionPolicy">
            <dataSourceDefinition>
                <driverClass>oracle.jdbc.driver.OracleDriver</driverClass>
                <url>jdbc:oracle:thin:@192.148.227.20:1521:DB11G</url>
                <user>ram</user>
                <password>worklight</password> 
            </dataSourceDefinition>
        </connectionPolicy>
        ...
        ...
    </connectivity>  

不幸的是,子视图会创建以下自动布局约束:

 _______________  _                  ______________  _
|               |  |                |______________| _| 0pt
|    parent     |  | 60pt
| _____________ | _|       onClick
||             ||             ->   
||     sub     ||
||_____________||
 ---------------

这意味着如果我像这样设置父级大小:

superview.height = self.maxY + 60

父母的身高将是60而不是0。 我实际上不想对应用的这一部分使用自动布局,只需将两个视图的parentView.animator().frame = NSRect(origin: NSZeroPoint, size: NSSize(width: parentView.frame.width, height: 0)) 设置为autoresizingMask即可。 但由于我在其他部分使用自动布局,显然在任何地方都可以自动布局......

如果我完全删除了所有自动布局视图,那么动画效果就会非常好。

简而言之:如何将父视图设置为小于其子视图的顶部偏移量?

如果没有其他方法可以使用自动布局作为父 - 子视图关系,那么在这种情况下如何将父级设置为0高度?

0 个答案:

没有答案