Мне нужно изменить размер NSPopver в приложении строки меню. Вот мой подход:
override func mouseDragged(with event: NSEvent) {
let appDelegate : AppDelegate = NSApplication.shared().delegate as! AppDelegate
let originSize = appDelegate.popover.contentSize
let currentLocation = NSWindow().mouseLocationOutsideOfEventStream
let delta_x = NSWindow().mouseLocationOutsideOfEventStream.x - currentLocation.x
let delta_y = NSWindow().mouseLocationOutsideOfEventStream.y - currentLocation.y
let newWidth = originSize.width + delta_x
let newHeight = originSize.height + delta_y
appDelegate.popover.contentSize = NSSize(width: newWidth, height: newHeight)
}
Проблемы:
- действие изменения размера NSPopover не может выполняться точно.
- Я хочу, чтобы курсор менялся на стрелку, когда курсор наводится на границу NSPopover, как я могу этого добиться?
РЕДАКТИРОВАТЬ:
Я попробовал решение NSPopOver и NSViewController - перетащите для изменения размера:
и вот код, который преобразуется в версию swift3:
override func mouseDragged(with event: NSEvent) {
var currentLocation = NSEvent.mouseLocation()
var newOrigin = currentLocation
let screenFrame = NSScreen.main()?.frame
newOrigin.x = screenFrame!.size.width - currentLocation.x
newOrigin.y = screenFrame!.size.height - currentLocation.y
// Don't let window get dragged up under the menu bar
if newOrigin.x < 260 {
newOrigin.x = 260
}
if newOrigin.y < 300 {
newOrigin.y = 300
}
let appDelegate : AppDelegate = NSApplication.shared().delegate as! AppDelegate
appDelegate.popover.contentSize = NSSize(width: newOrigin.x, height: newOrigin.y)
}