2015-03-23 2 views

ответ

5

Допустим, ваше окно имеет под названием «окно» IBOutlet, и ваш динамический номер назван «myDynamicNumber»:

func resize() { 
    var windowFrame = window.frame 
    let oldWidth = windowFrame.size.width 
    let oldHeight = windowFrame.size.height 
    let toAdd = CGFloat(myDynamicNumber) 
    let newWidth = oldWidth + toAdd 
    let newHeight = oldHeight + toAdd 
    windowFrame.size = NSMakeSize(newWidth, newHeight) 
    window.setFrame(windowFrame, display: true) 
} 
+1

Спасибо большое! Это сработало отлично! –

4

В 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) 

} 
0

мне нужно, чтобы переключить просмотр текста вид, так что я перекрывается в окно невидимый вид - hideRect чуть меньше точки зрения текста; таким образом, я могу изменить размер до меньшего (hideRect) и восстановить позже первоначальный размер - origRect. Скрыть и исходный прямоугольник захвачен в viewDidLoad(). 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 
     } 
    } 
} 

Это также сохранило визуальное происхождение вдовы и минимальный размер.