窗口动画宽度但不是高度

时间:2017-09-29 16:46:21

标签: swift macos cocoa

我有一个首选项窗口,其中NSTabViewController连接到工具栏以选择选项卡。我希望窗口可以调整大小,并在切换标签时根据需要调整大小以适应新标签的大小。

我正在使用以下重载对NSTabViewController进行子类化:

override var selectedTabViewItemIndex: Int
{
  didSet
  {
    guard let view = tabViewItems[selectedTabViewItemIndex].view,
          let window = view.window
    else { return }

    let minSize = view.fittingSize
    let contentRect = NSWindow.contentRect(forFrameRect: window.frame,
                                           styleMask: window.styleMask)
    let minRect = NSRect(origin: contentRect.origin, size: minSize)
    let newRect = minRect.union(contentRect)
    let newFrame = NSWindow.frameRect(forContentRect: newRect,
                                      styleMask: window.styleMask)

    window.animator().setFrame(newFrame, display: true, animate: true)
  }
}

结果是它动画水平调整大小,最后它也突然垂直调整大小。如何让它同时为两个方向制作动画?

1 个答案:

答案 0 :(得分:0)

您是否对任何标签都有高度限制?这些可能会阻止窗口变大(即使在屏幕外)。