macos – 使用自动布局时如何获得正确的帧原点?

使用Interface Builder我有一个带有多行NSTextField(标签)的NSView,并且在它下面是一个NSComboBox.由于标签的高度是动态的(例如,取决于所使用的平移),组合框的位置也是动态的(因为组合框的位置使用约束链接到标签).

我试图在自动布局后获得组合框的正确位置.这样做一定很容易,但由于某种原因,我无法让它发挥作用.我可以使用[NSView fittingSize]获取标签的大小调整大小,但[NSView框架]返回错误的Y位置(它只返回IB中使用的位置).所以我的问题基本上是如何在自动布局后重新定位框架?

仅供参考,我在覆盖的[NSView loadView]方法中请求frame属性.

谢谢你的帮助!

最佳答案 NSView没有loadView方法.你的意思是NSViewController的loadView吗?如果是这样,我认为现在到达实际框架为时尚早.您可以尝试覆盖updateConstraints并在那里签入.在iOS中你可以在viewDidAppear中执行此操作: – 我不确定OS X的等价物是什么.另一种可能性是viewDidMoveToWindow.

点赞