我真的很喜欢使用RBSplitView,它是NSSplitView的开源替代品,但我在我的发货应用程序中遇到问题,并且在新项目中再次体验它。
问题是我告诉RBSplitView通过给它一个自动保存名称来自动保存它的位置状态。当我的应用程序启动时,RBSplitView似乎不会保留已保存的状态,直到窗口被绘制后的一秒钟。
我花了一夜试图调试行为,但收效甚微。那里的任何人都使用这个lib并提出一些建议吗?
您可以将此快速影片播放到工作中的问题:
答案 0 :(得分:1)
我仍然无法弄清楚为什么会这样,但我确实有一个解决方法。
首先,确保您的主窗口在启动时不可见,然后在appDidFinishLaunching应用委托中添加以下内容:
[mainWindow performSelector:@selector(makeKeyAndOrderFront :) withObject:self afterDelay:0.1];
延迟是关键。如果你只是告诉窗口makeKeyAndOrderFront:我仍然看到问题。然而,只要它有一段时间它看起来不错。
答案 1 :(得分:0)
这可能正在发生,因为RBSplitView实例需要等到它的第一时刻才能将其帧设置为自动保存的值,这恰好在用户可以看到之后。这个0.0延迟技巧简单地延迟显示窗口,直到下一个runloop,这使得分割视图有机会进行其魔法(和其他视图),这样当用户看到窗口时,它已经很好而且性感。所以只需将延迟设为0.0就可以了。
答案 2 :(得分:0)
我在使用RBSplitView的应用中有类似但略有不同的解决方法。在applicationDidFinishLaunching:中,我在分割视图上调用adjustSubviews,然后在包含它的窗口上调用makeKeyAndOrderFront :.这似乎会在分割视图显示在屏幕上之前将其拆分。