【问题标题】:Programmatically resizing NSSplitView以编程方式调整 NSSplitView 的大小
【发布时间】:2011-07-08 21:03:25
【问题描述】:

我曾经使用并喜欢 RBSplitView,但是由于某个版本的 xcode 不再支持 IB 插件,因此我无法以编程方式重新实现它。

因此我又回到使用 NSSplitView。 NSSplitView 可以满足我的需要,问题是 NSSplitView 的 autoSave 被破坏了。所以我决定自己实现它。

我现在正在做的事情是调整 NSSplitView 的 1 个子视图的大小。

调整 NSSplitView 大小的正确方法是什么? - setPositionOfDivider:itIndex: 应该是要走的路(没试过),但是我不知道如何获得分隔线的当前位置。

--提前感谢

【问题讨论】:

    标签: objective-c cocoa xcode appkit nssplitview


    【解决方案1】:

    根据我的经验,NSSplitView 讨厌你并希望你受到伤害。 RBSplitView 好多了,值得 IMO 为程序化布局头疼(而且我已经被 ShortcutRecorder IB 插件迷住了,我再也不会回到 IB 插件了)。

    也就是说……

    我所知道的确定分隔线当前位置的唯一方法是查看子视图,找到分隔线的视图,获取它的框架,然后计算出它的位置,记住dividerThickness。您必须编写该代码真是太疯狂了,但是代码并没有那么难,您可以将其归为一类。

    如果您的需求变得复杂,或者在您仍然可以的时候返回RBSplitView

    【讨论】:

    • 它是一个简单的聊天窗口,我的需求不会很快变得复杂。我确信代码并不难,只是想知道是否有 proper 方式,因为在大小为 0 时调整 1 个子视图的大小确实有效,无论如何我现在要尝试这个,如果它可以工作你'会得到一个cookie
    • 位置 = subView0.frame.size.height + subView0.frame.origin.x;工作 - 不是实际的代码,而是我做的方式和工作是什么
    • 你是说 subView0.frame.size.width 吗?
    【解决方案2】:

    我在这里使用的是 Swift,但在 Objective C 中应该存在相同的方法:

    mySplitter.setPosition(123, ofDividerAtIndex: 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      相关资源
      最近更新 更多