2017-07-10 4 views
5

Ich versuche, dynamische Nibs als Teilansichten von Containern zu laden. Ich habe es fast zum Laufen gebracht, außer dass die Subviews einen Offset haben, den ich nicht loswerden kann (siehe pink view in den Bildern unten).Machen Sie Subview passen in Container und Größe korrekt ändern

enter image description here

Aus der View-Hierarchie Debuggen:

enter image description here

Wie Sie im zweiten Bild sehen können, ist der Containerrahmen korrekt positioniert ist, während die Subview nicht aus irgendeinem Grunde sind.

Ich weiß nicht wirklich, was mit Auto-Layout geht.

Hier ist der Code, der mit dem Laden der Feder beschäftigt und als Subview Zuordnung:

enter image description here

Der kommentierte-out-Code ist alles, was ich versucht habe, um es ohne Erfolg zu arbeiten. Ich dachte, dass das automatische Layout funktionieren würde, ohne dass ich irgendetwas tun müsste, aber standardmäßig lädt es die Spitze, ohne sie zu vergrößern.

Das bedeutet, die führenden und Top-Anker ist richtig, aber die Spitze verwendet dann seine volle Größe ... (siehe Bild unten)

enter image description here

Die Frage ist also, was für mich notwendig ist, um tun, um die Feder zu laden und an die Containeransicht anzupassen?

Antwort

4

Sie sollten Ihrem NibView Constraints hinzufügen, anstatt die Grenzen und den Rahmen des NibView zu setzen.

Versuchen Sie, die folgende Funktion (addFullScreenConstraint) auf der NibView nach der Zugabe des NibView als Subview des Inhalts Ansicht aufzurufen:

extension UIView { 

    /// Adds constraints to this `UIView` instances `superview` object 
    /// to make sure this always has the same size as the superview. 
    /// Please note that this has no effect if its `superview` is `nil` 
    /// – add this `UIView` instance as a subview before calling this. 
    func addFullScreenConstraints() { 
     guard let superview = self.superview else { 
      return 
     } 

     self.translatesAutoresizingMaskIntoConstraints = false 
     superview.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[subview]-0-|", 
                   options: .directionLeadingToTrailing, metrics: nil, views: ["subview": self])) 
     superview.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-0-[subview]-0-|", 
                   options: .directionLeadingToTrailing, metrics: nil, views: ["subview": self])) 
    } 
} 
+0

Heilige Guacamole, es endlich geklappt! Danke vielmals – Skwiggs

Verwandte Themen