我有一个使用 NSSplitViewController
作为根的应用程序,并连接了一个 NSTabViewController
作为其详细 View Controller 。
此应用程序设置为以 1024x768 启动。左 Pane 应以 320x768 启动,右 Pane (tabViewController 所在位置)应以 704x768 启动。
我运行此应用程序 10 次,其中有 9 次会以不正确的尺寸(大约 500x500)启动。其他奇怪的事情是这个应用程序不应该是可扩展的,但是如果您将鼠标悬停在窗口边框附近,您会看到光标指示可缩放。
我希望它以正确的大小启动,并且没有可扩展选项。
这两个设置都在界面生成器上,但被忽略。
You can download a sample project that demonstrates the problem, here 。停止并运行该项目几次以查看问题。
如何解决这个问题?
最佳答案
我无法确定导致问题的原因,但解决该问题的一种方法是添加一些约束。 Interface Builder 不允许您约束它插入到 Split View的左侧和右侧面板中的默认 NSView 实例,因此您需要添加自己的实例。下面的屏幕截图 取自您的演示,但在我完成以下操作之后:
- 向左侧拆分添加了一个 subview (我的内容 View ),并将其边缘固定到其 super View 的边缘(Xcode 自动添加到 Split View的 View )
- 向我的内容 View 添加了 320 像素的显式宽度限制
当我加载应用程序时,两个分割都可见,分隔线不会移动,并且窗口无法调整大小。
更新 - 更好的解决方案
虽然约束是解决这个问题的一种方法,但我认为问题的根源在于 Interface Builder 中的一些意外行为。当您将 NSSplitViewController
对象拖到 Canvas 上,并使其成为窗口 Controller 的 content window
关系的目标时,分割 View Controller 的 view
实际上并未设置 socket 。这样做的一个后果似乎是,当您加载应用程序时,分隔线似乎位于一侧。要解决此问题,请将上述 View 导出设置为指向 Split View:
我创建了一个 demo project其设置类似于提问者的演示应用程序中的设置。
关于macos - 基于 NSSplitViewController 的应用程序几乎永远不会以正确的大小启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28190009/