我使用弹簧和支柱以及几种NSSplitViewDelegate
调整大小和约束方法实现了以下功能,它们都可以按需要工作。我现在正试图通过用适当的约束autolayout
替换所有setFrame
消息和方法来采用相同的场景。NSSplitViewDelegate
autolayout
我的主窗口的视图包含一个垂直拆分视图(我称为 OuterSplitter),其中顶部、底部、左侧和右侧的前导和尾随空间约束设置为零,以便 OuterSplitter 到其父视图。
OuterSplitter 的右窗格(除其他外)包含另一个垂直拆分视图(我称之为 InnerSplitter),该视图也将 InnerSplitter 到其superview
(即 OuterSplitter 的右窗格)的顶部、底部、左侧和右侧的前导和尾随空间约束设置为零)。
我已经为 OuterSplitter 的左窗格以及 InnerSplitter 的左窗格和右窗格设置了标称最小宽度约束。
调整主窗口大小时,所需的行为是将所有(或大部分)扩展和收缩应用于 InnerSplitter 的左窗格,除非最小宽度约束之一生效。因此,我将 OuterSplitter 左侧窗格的拆分视图保持优先级设置为 260(最高),右侧窗格设置为 250。此外,InnerSplitter 左窗格的保持优先级为 245(最低)和右窗格的 255。
我观看了 WWDC 2012 的第 232 场会议的视频,并认为我走在正确的轨道上。我的autolayout
约束大部分都按预期工作,但是我的 springs 和 struts 版本没有发生一种非常奇怪的行为。
如果 InnerSplitter 的拆分栏尽可能靠右(InnerSplitter 右窗格处于其最小尺寸)并且 OuterSplitter 拆分栏没有尽可能靠左,那么如果您尝试将 InnerSplitter 的拆分栏拖得更远向右,然后 OuterSplitter 的拆分栏意外地向左移动,导致 InnerSplitter 的左窗格增大,而 OuterSplitter 的左窗格缩小。我的期望是在这种情况下不应该调整大小。
拉动固定在右侧的 InnerSplitter 的拆分条时,是否可以阻止 OuterSplitter 的拆分条移动?如果是这样,应该添加什么约束?还是某些NSSplitViewDelegate
方法仍然需要?谢谢。
顺便说一句,我正在使用 Xcode 4.6.3 并针对 OSX 10.8。