2017-05-25 4 views
1

Mon OS X App tente de créer une fenêtre programme comme ci-dessous (suggéré par une autre SO question que j'ai vu plus tôt):Dans l'application OS X, comment utiliser la mise en page automatique lorsqu'une fenêtre est créée par programmation?

class MyViewController: NSViewController { 

    override func loadView() { 

     let view = NSView(frame: NSMakeRect(0,0,300,100)) 
     view.wantsLayer = true 
     view.layer?.borderWidth = 2 
     view.layer?.borderColor = NSColor.red.cgColor 
     self.view = view 
    } 
} 

let viewController = MyViewController() 
let window = NSWindow(contentRect: someFrame, styleMask: [.resizable, .closable, .miniaturizable, .titled], backing: NSBackingStoreType.buffered, defer: false) 

window.contentView?.addSubview(viewController.view) 
window.makeKeyAndOrderFront(nil) 

Je peux créer avec succès les fenêtres par le code ci-dessus. Cependant, ma question est ... comment rendre la vue créée dans loadView à l'intérieur du contrôleur de vue pour avoir la même taille que la vue de contenu de la fenêtre?

Actuellement, il crée la vue avec des nombres fixes (0, 0, 300, 100). Comment rendre cette vue à la même taille que la fenêtre en utilisant la mise en page automatique, de sorte que lorsque la fenêtre est redimensionnée, cette vue sera automatiquement redimensionnée?

+0

pourquoi ne pas utiliser des contraintes entre window.contentview et viewcontroller.view? Utilisez juste des contraintes pour épingler viewcontroller.view en haut, à gauche, à droite et en bas à window.contentview – Abhishek

Répondre

0
+0

Je sais comment utiliser les mises en page automatiques mais pas dans mon code ci-dessus. Comment obtenez-vous le contenu de la fenêtre ici pour faire les contraintes de disposition automatique? Je ne demande pas comment faire la mise en page automatique en général. Merci. –