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