代码之家  ›  专栏  ›  技术社区  ›  AlbertUI

在windoddresize事件结束时执行函数

  •  0
  • AlbertUI  · 技术社区  · 5 年前

    我想在windowDidResize事件结束后执行一个函数。当此块运行时,它将打印以下内容:

    NotificationCenter.default
      .publisher(for: NotificationName.windowDidResize)
      .sink { _ in
    
          // Perform something
          print("WindowDidResize")
    
       }.store(in: &cancellableBag)
    

    打印输出:

    WindowDidResize
    WindowDidResize
    WindowDidResize
    WindowDidResize <-- Want to run a function here
    

    在最后一个函数之后如何执行函数 windowDidResize 只有一次?我想在调整窗口大小时隐藏一些UI元素(因为这会使操作非常慢),并在窗口调整大小后重新绘制它们(延迟0.25秒或其他)。

    1 回复  |  直到 5 年前
        1
  •  1
  •   Leo Dabus    5 年前

    您可以实现 optional method windowDidEndLiveResize

    你也可以监视 didendliveresizenotification

    import Cocoa
    
    class ViewController: NSViewController, NSWindowDelegate {
        override func viewDidLoad() {
            super.viewDidLoad()
        }
        override func viewWillAppear() {
            super.viewWillAppear()
            view.window?.delegate = self
        }
        func windowDidEndLiveResize(_ notification: Notification) {
            print(#function)
        }
    }