像macOS上的Photos.app一样的macOS应用程序

时间:2017-06-04 18:21:50

标签: swift macos nswindow nsviewcontroller nswindowcontroller

我正在尝试创建像Photos.app这样的macOS应用。 NSWindowController有一个带有分段控件的工具栏。当您点按分段控件时,它会更改NSViewController中的NSWindowController

Example of Apple Photos.app.

到目前为止我所拥有的是NSWindowController NSViewController。我已经将NSWindowController子类化了,其中我有一个方法,只要用户点击分段控件就会调用该方法。

基本上,无论单击哪个段,它都会实例化所需的视图控制器并将其设置为NSWindowController的{​​{1}}属性。

enter image description here

这是正确的做法吗?

此外,我想,contentViewController应该具有可以切换到延迟加载的每个NSWindowController的属性(当用户点击它们时加载它们并且它们被保持在被重复使用以防止重新初始化。)

代码:

NSViewController

我是macOS开发的新手,但是,我已经做了很长一段时间的iOS。如果有更好的方法,我想了解它。感谢!!!

1 个答案:

答案 0 :(得分:2)

要将标签/分段控件移动到标题栏,您需要:

  1. 将工具栏添加到窗口,并将控件添加到工具栏
  2. 隐藏标题:

    class TopLevelWindowController: NSWindowController {
    
      override func windowDidLoad() {
        super.windowDidLoad()
    
        if let window = window {
    
            // reminder like style
            // window.titlebarAppearsTransparent = true
            window.titleVisibility = .hidden
            // window.styleMask.insert(.fullSizeContentView)
        }
      }
    }
    
  3. 现在,工具栏将合并到顶部栏位置。