/ / Das Laden einer Xib-Datei in ein benutzerdefiniertes NSView wird in ein anderes benutzerdefiniertes NSView eingebettet - swift, xcode, macos, swift3 und Interface-Builder

Das Laden der XIB-Datei in ein benutzerdefiniertes NSView wird in ein anderes benutzerdefiniertes NSView - swift, xcode, macos, swift3, interface-builder eingebettet

Ich habe ein benutzerdefiniertes NSView (genannt) Header), die ich zur Laufzeit laden kann. Diese benutzerdefinierte NSView (Header) wird in ein anderes benutzerdefiniertes NSView eingebettetLaufzeit, die größer ist und zusätzlichen Speicherplatz an der Unterseite erzeugt (ich möchte diesen zusätzlichen Speicherplatz nicht). Gibt es eine andere Möglichkeit, eine Xib-Datei zu laden, bei der dieses Problem nicht auftritt?

So sieht es aus: Bildbeschreibung hier eingeben

So lade ich die xib-Datei:

import Cocoa

class Header: NSView {

@IBOutlet var view: Header!
@IBOutlet weak var dateLabel: NSTextField!
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)

// Drawing code here.
}
override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
var topLevelObjects = NSArray()
Bundle.main.loadNibNamed("Header", owner: self, topLevelObjects: &topLevelObjects)

let view = ((topLevelObjects as Array).filter { $0 is NSView })[0] as! NSView
self.frame = NSRect(x: 0, y:0, width: view.frame.width, height: view.frame.height)
self.addSubview(self.view)
}

required init?(coder: NSCoder) {
super.init(coder: coder)
}
}

Antworten:

0 für die Antwort № 1

Warum Sie keine eigene Kopfzeile mit Einschränkungen und Ansichten hinzufügen. Ist zu einfach.

let mainContainer = UIView()
mainContainer.backgroundColor = UIColor.blue
mainContainer.translatesAutoresizingMaskIntoConstraints = false

self.view.addSubview(mainContainer)

let views = ["mainContainer" : mainContainer]

let metrics = ["mainContainerWidth" : self.view.bounds.width]

self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[mainContainer]|", options: [], metrics: metrics, views: views))

self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[mainContainer]|", options: [], metrics: metrics, views: views))

Hier sind ein paar Beispiele für die Verwendung von VF.

Ich hoffe diese Hilfe.

https://github.com/CristianCardosoA/Auto-layout-VF