2015-10-04 47 views
0

我有一个NSSplitView视图,它是由自动布局支持的,这个效果很好。不过,我需要能够在代码中设置初始分割位置(因为它将从首选项中恢复)。设置自动布局NSSplitView的初始位置

我不能完全弄清楚如何使这项工作。在El Capitan之前,设置框架宽度似乎可行,但我意识到这是绕过了自动布局的规则,因此这不是一个选项。不使用自动布局也不是真正的选择。我需要在视图加载的时候设置它,所以大概有一种方法可以指定与在XCode中设置宽度时相同的宽度,但我无法弄清楚。

任何想法?指针?或者这是不可能的?我宁愿不必切换到另一个NSSplitView变种,如果我可以避免它,但会做,如果这是唯一可能的解决方案。

回答

1

假设约束条件允许,拆分视图的divider位置应保持其在NIB中的设置。

您可以设置一个拆分视图的autosaveName。如果你设置了它,那么分割视图会在运行时调整它的分隔符位置。在随后的负载中,它应该将其分配器的位置恢复到任何已保存的位置。

最后,您可以使用-setPosition:ofDividerAtIndex:随时以编程方式对其进行设置,包括在您的-viewDidLoad-windowDidLoad方法中。

+0

我从来没有见过autosaveName为我工作的NSSplitView,即使设置标识符。我见过其他地方的评论意味着它被打破了。 –

+0

我刚刚构建了一个使用分割视图的autosaveName的测试项目,它工作得很好。 Xcode 6.2,OS X 10.9.5。 –

+0

这是与自动布局?如果相关,我使用10.11和XCode 7。从我所看到的位置正确地保存到首选项文件中,但是当应用程序重新启动时,保存的位置没有被应用,并且在不同的首选项中被覆盖。 –