有没有办法指定在调整工作表大小时可以使用哪些边?

时间:2017-05-24 22:12:17

标签: swift macos cocoa resize

我希望将一张工作表附加到其父窗口的底部边缘,这样我仍然可以看到父级内容的顶部。我在父视图控制器中以通常的方式显示它。

  @IBAction func clickShowSheet(_ sender: NSButton) {
    mySheet = MySheetController(windowNibName: "MySheet")
    view.window!.beginSheet(mySheet.window!, 
      completionHandler: {response in
         print(response == NSModalResponseOK ? "OK" : "Cancel")
         self.mySheet = nil
    })

要将它附加到底边,我实现了父窗口的委托方法:

 func window(_ window: NSWindow, willPositionSheet sheet: NSWindow, using rect: NSRect) -> NSRect {
    var rect = rect
    rect.origin.y = sheet.frame.size.height + 15
    return rect
  }

效果令人满意。我喜欢动画以另一种方式工作。

我还希望工作表可以调整大小,所以在复制框中保留了复选框。通过拖动边来调整大小很重要:工作表保持居中。不能拖动顶部边缘,如果工作表位于其窗口的顶部,但是底部边缘可以被拖动,将工作表留在中间某处,这将是有意义的。我可以通过实施windowDidEndLiveResize来恢复它。看起来很傻。所以我需要知道的是,有没有办法启用/禁用特定边的拖动?

0 个答案:

没有答案