Macos 根据变量调整窗口大小
我有一个Macos 根据变量调整窗口大小,macos,cocoa,swift,resize,window,Macos,Cocoa,Swift,Resize,Window,我有一个NSViewController和一个变量num。我想根据该变量动态更改窗口的大小。在swift中有什么方法可以做到这一点吗?假设您的窗口有一个名为“window”的IBOutlet,您的动态号码名为“myDynamicNumber”: 在Swift 3中,使用setFrame调整窗口大小 ViewController中的一个示例: func resizeWin(size:(CGFloat,CGFloat)){ self.view.window?.setFrame(NSRect
NSViewController
和一个变量num
。我想根据该变量动态更改窗口的大小。在swift中有什么方法可以做到这一点吗?假设您的窗口有一个名为“window”的IBOutlet,您的动态号码名为“myDynamicNumber”:
在Swift 3中,使用setFrame调整窗口大小 ViewController中的一个示例:
func resizeWin(size:(CGFloat,CGFloat)){
self.view.window?.setFrame(NSRect(x:0,y:0,width:size.0,height:size.1), display: true)
}
我需要切换查看文本视图,因此我将窗口覆盖为一个看不见的视图-仅短于文本视图;通过这种方式,我可以将大小调整为较小(Hid直立),然后恢复为原始大小-origRect。隐藏在viewDidLoad()上捕获的原始rect。Swift 3/Xcode 8.3.3
// class global contants
let kTitleUtility = 16
let kTitleNormal = 22
@IBOutlet var hideView: NSView!
var hideRect: NSRect?
var origRect: NSRect?
@IBAction func toggleContent(_ sender: Any) {
// Toggle content visibility
if let window = self.view.window {
let oldSize = window.contentView?.bounds.size
var frame = window.frame
if toggleButton.state == NSOffState {
frame.origin.y += ((oldSize?.height)! - (hideRect?.size.height)!)
window.setFrameOrigin(frame.origin)
window.setContentSize((hideRect?.size)!)
window.showsResizeIndicator = false
window.minSize = NSMakeSize((hideRect?.size.width)!,(hideRect?.size.height)!+CGFloat(kTitleNormal))
creditScroll.isHidden = true
}
else
{
let hugeSize = NSMakeSize(CGFloat(Float.greatestFiniteMagnitude), CGFloat(Float.greatestFiniteMagnitude))
frame.origin.y += ((oldSize?.height)! - (origRect?.size.height)!)
window.setFrameOrigin(frame.origin)
window.setContentSize((origRect?.size)!)
window.showsResizeIndicator = true
window.minSize = NSMakeSize((origRect?.size.width)!,(origRect?.size.height)!+CGFloat(kTitleNormal))
window.maxSize = hugeSize
creditScroll.isHidden = false
}
}
}
这也保留了寡妇的视觉来源和最小尺寸
// class global contants
let kTitleUtility = 16
let kTitleNormal = 22
@IBOutlet var hideView: NSView!
var hideRect: NSRect?
var origRect: NSRect?
@IBAction func toggleContent(_ sender: Any) {
// Toggle content visibility
if let window = self.view.window {
let oldSize = window.contentView?.bounds.size
var frame = window.frame
if toggleButton.state == NSOffState {
frame.origin.y += ((oldSize?.height)! - (hideRect?.size.height)!)
window.setFrameOrigin(frame.origin)
window.setContentSize((hideRect?.size)!)
window.showsResizeIndicator = false
window.minSize = NSMakeSize((hideRect?.size.width)!,(hideRect?.size.height)!+CGFloat(kTitleNormal))
creditScroll.isHidden = true
}
else
{
let hugeSize = NSMakeSize(CGFloat(Float.greatestFiniteMagnitude), CGFloat(Float.greatestFiniteMagnitude))
frame.origin.y += ((oldSize?.height)! - (origRect?.size.height)!)
window.setFrameOrigin(frame.origin)
window.setContentSize((origRect?.size)!)
window.showsResizeIndicator = true
window.minSize = NSMakeSize((origRect?.size.width)!,(origRect?.size.height)!+CGFloat(kTitleNormal))
window.maxSize = hugeSize
creditScroll.isHidden = false
}
}
}