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 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 № 1Warum 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