macos - 使用自动布局时如何获得正确的框架原点?

标签 macos cocoa nsview autolayout

使用 Interface Builder 我有一个带有多行 NSTextField (标签)的 NSView,在其正下方有一个 NSComboBox。由于标签的高度是动态的(例如,取决于所使用的翻译),组合框的位置也是动态的(因为组合框的位置使用约束链接到标签)。

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

仅供引用,我正在覆盖的 [NSView loadView] 方法中请求框架属性。

感谢您的帮助!

最佳答案

NSView 没有 loadView 方法。你指的是 NSViewController 的 loadView 吗?如果是这样,我认为现在获得实际框架还为时过早。您可以尝试覆盖 updateConstraints 并在那里检查。在 iOS 中,您可以在 viewDidAppear 中执行此操作: -- 我不确定 OS X 中的等效项是什么。另一种可能性是在 viewDidMoveToWindow 中。

关于macos - 使用自动布局时如何获得正确的框架原点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14789273/

相关文章:

cocoa - 如何制作 cocoa 披露三角

macos - Vagrant VirtualBox Cisco AnyConnect 与 VPN 的路由问题

objective-c - +(void) 或 -(void) 区别?

macos - 动态地将单元添加到使用自动布局布局的 NSMatrix 中会产生奇怪的效果;为什么?

nsview - 如何在自定义 NSView 中使用 NSScroller

cocoa - 如何再次调用 awakeFromnib ,我正在使用 setNeedsDisplay ,它不起作用

cocoa - Mac应用程序: Auto-Resizing of subview doesn't work

ios - 从一个 Bash 脚本运行多个 Docker 镜像

macos - 碳 Emacs : no `focus' in minibuffer on incremental search

objective-c - SpriteKit sks 文件的用途