/ / Ładowanie pliku xib do niestandardowego NSView zostaje osadzone w innym niestandardowym NSView - swift, xcode, macos, swift3, interface-builder

Ładowanie pliku xib do niestandardowego NSView zostaje osadzone w innym niestandardowym NSView - swift, xcode, macos, swift3, interface-builder

Mam niestandardowy NSView (nazywany Header), które mogę załadować podczas uruchamiania. Jednak ten niestandardowy NSView (Header) zostanie osadzony w innym niestandardowym widoku NSView naczas działania, który jest większy i tworzy dodatkową przestrzeń na dole (nie chcę tego dodatkowego miejsca). Czy istnieje inny sposób na załadowanie pliku XIB, który nie będzie miał tego problemu?

Oto jak wygląda: wprowadź opis obrazu tutaj

Oto jak ładuję plik xib:

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

Odpowiedzi:

0 dla odpowiedzi № 1

Dlaczego nie dodajesz własnego nagłówka za pomocą wiązań i widoków, zbyt łatwo.

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

Oto kilka przykładów użycia VF.

Mam nadzieję, że ta pomoc.

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