ich wiederverwendbar Ansichten in einer xib/nib Datei in schnellen iOS 10.Ist das Verhalten von StackView Constraints in einer NIB/XIB anders?
Wenn ich eine Stapelansicht und haben 2 Objekte darin und stellen Sie sicher, dass meine stackview gezwungen ist, auf den Behälter Ansicht der erstellen bin versucht, nib/xib (von oben nach unten, von unten nach rechts, führend und schließlich nachlaufend), erhalte ich die Fehlermeldung, dass meine Y-Position für das erste und das zweite Objekt fehlt. Wenn Sie nur eine von ihnen erstellen, wird dies normalerweise behoben. Obwohl dies ist, wo Dinge seitwärts gehen. Bei all meinen bisherigen Recherchen sollte ich das nicht tun müssen, wenn ich meine Stackview auf Fill verteilt habe. Obwohl dies Xcode zu beruhigen scheint, erzeugt es ein Problem mit übermäßigen Einschränkungen, wenn ich versuche, mein Programm auszuführen.
Hier ist, was ich verwenden, um meine Feder in einer Ansicht von meiner Haupt-Storyboard zu laden:
public protocol NibOwnerLoadable: class {
static var nib: UINib { get }
}
//MARK:- Generic Implementation
public extension NibOwnerLoadable {
// Use the xib file with the same name as your UIView subclass located in the bundle of that class
static var nib: UINib {
return UINib(nibName: String(describing: self), bundle: Bundle(for: self))
}
}
//MARK:- Support for instation from the XIB file
public extension NibOwnerLoadable where Self: UIView {
// Function to load content and constraints automatically
func loadNibContent() {
let layoutAttributes: [NSLayoutAttribute] = [.top, .leading, .bottom, .trailing]
for view in Self.nib.instantiate(withOwner: self, options: nil) {
if let view = view as? UIView {
view.translatesAutoresizingMaskIntoConstraints = false
view.frame = bounds
self.addSubview(view)
layoutAttributes.forEach{ attribute in self.addConstraint(NSLayoutConstraint(item: view, attribute: attribute, relatedBy: .equal, toItem: self, attribute: attribute, multiplier: 1, constant: 0.0))
}
}
}
}
}
Ich weiß, dass mein Problem ist eine zusätzliche Beschränkung, das durch Auto-Layout hinzugefügt wird, aber warum und wo. Diese andere Frage ist sehr nah an dem, was ich versuche zu tun, aber aus irgendeinem Grund ist mein AutoLayout-Wissen in meinem Kopf durcheinander. Adding a subclassed UIView to a Nib with its auto layout constraints Ein wenig Hilfe wäre zu schätzen. Bitte erläutern Sie den Grund, nicht nur, wie es geht. Ich bin ein Typ, der gerne die Hintergrundgeschichte versteht. Es macht es logisch und leichter zu behalten.
Hier sind Bilder meiner filterView als Nib/Xib, die in SearchAndFilterView als FilterView (UIView) geladen wird, die in einem meiner View Controller in meinem Storyboard geladen wird. Denken Sie an wiederverwendbare Tool-Ansichten.
Lassen Sie mich ein wenig mehr klären ... –
Lassen Sie zuerst sehen, ob ich diese Aufgabe zuerst erledigen kann. Ich möchte, dass meine Containeransichten für meine XIB/NIB-Ansicht eine bestimmte Höhe haben. Diese XIB/NIB-Ansichten müssen eine bestimmte Größe haben und sich in einer Stapelansicht befinden, damit ich die Ansicht verkleinern kann, wenn diese Containeransicht ausgeblendet wird. Ich kann dies tun, ohne XIB/NIB in Ordnung, aber ich kann dies nicht erreichen, Container-Ansichten subclassed meines XIB/NIB fileOwner verwendend. –