Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 根据变量调整窗口大小_Macos_Cocoa_Swift_Resize_Window - Fatal编程技术网

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
        }
    }
}