在 windodDidResize 事件结束时执行函数
Perform function at the end of windodDidResize event
我想在 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
之后只执行一次功能?我想在 window 调整大小时隐藏一些 UI 元素(因为它使操作太慢)并在 window 调整大小时重新绘制它们(延迟 0.25 秒或别的东西)。
Swift 5.3 | Xcode 12.2 | macOS 11.1
您可以实现 optional method windowDidEndLiveResize
,它只会在 window 调整大小结束时调用一次:
您还可以监控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)
}
}
我想在 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
之后只执行一次功能?我想在 window 调整大小时隐藏一些 UI 元素(因为它使操作太慢)并在 window 调整大小时重新绘制它们(延迟 0.25 秒或别的东西)。
Swift 5.3 | Xcode 12.2 | macOS 11.1
您可以实现 optional method windowDidEndLiveResize
,它只会在 window 调整大小结束时调用一次:
您还可以监控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)
}
}