我怎么知道拆分视图何时完成其布局?

时间:2019-03-02 11:33:19

标签: cocoa layout nswindowcontroller nssplitview nssplitviewcontroller

我的应用程序的主窗口包含一个NSSplitView

我需要获取拆分视图的第一个子视图的宽度(左侧的视图),以便执行一些UI更新。

我试图在两个不同的地方获取此值:

  1. 使用窗口控制器的windowDidLoad()方法
  2. 在拆分视图控制器的viewDidLayout()方法中

使用以下代码:

var leftViewWidth: CGFloat? {
    guard let leftView = splitViewController?.splitView.arrangedSubviews.first else {
        return nil
    }
    return leftView.frame.size.width
}

在两个地方,此代码均返回 234 (在应用启动后),但是当我单击按钮并运行相同的代码时,它突然返回 254 (这是正确的值)。

这告诉我,在上述两个地方,拆分视图的布局尚未完成,并且此后系统以某种方式调整了左视图的大小。所以问题是:

我怎么知道分割视图的布局何时完成?

(出于好奇:这20点有什么区别?)


编辑:

由于某些原因,当我将第一个拆分视图项目的behavior设置为sidebarcontentList时,不会发生此问题。我真的不知道该怎么办,但这可能只是个提示...

Identity Inspector Screenshot

0 个答案:

没有答案