Hier ist eine Methode, bei der ich eine Unteransicht an eine UIView
Instanz anhefte. Entschuldigen Sie den unordentlichen Code, ich habe experimentiert, um das zum Laufen zu bringen.Die unteren und rechten Sichtbedingungen sind negativ?
open static func withEmbeddedView(_ view: UIView, andFixedHeight height: CGFloat) -> PMGAlertControllerEmbedComponent {
let base = PMGAlertControllerEmbedComponent(frame: CGRect.zero)
base.addSubview(view)
view.translatesAutoresizingMaskIntoConstraints = false
base.translatesAutoresizingMaskIntoConstraints = false
let left = NSLayoutConstraint(item: view, attribute: .left, relatedBy: .equal, toItem: base, attribute: .left, multiplier: 1, constant: 0)
let right = NSLayoutConstraint(item: view, attribute: .right, relatedBy: .equal, toItem: base, attribute: .right, multiplier: 1, constant: 0)
let top = NSLayoutConstraint(item: view, attribute: .top, relatedBy: .equal, toItem: base, attribute: .top, multiplier: 1, constant: 0)
let bottom = NSLayoutConstraint(item: view, attribute: .bottom, relatedBy: .equal, toItem: base, attribute: .bottom, multiplier: 1, constant: 0)
base.addConstraints([left, right, top, bottom])
view.addConstraint(NSLayoutConstraint(item: view, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: height))
base.leftConstraint = left
base.rightConstraint = right
base.topConstraint = top
base.bottomConstraint = bottom
base.layoutIfNeeded()
return base
}
Jetzt funktioniert das an sich gut, aber sobald ich versuche, und ändern Sie diese an anderer Stelle Konstanten der Einschränkung, sagen sie 16 machen ein bisschen Polsterung hinzuzufügen, gehen die rechten und unteren Randbedingungen in die andere Richtung! Also, anstatt dass die Subview kleiner ist als die Superview um 16Punkte, ist sie um 16Punkte größer? Oben und links verhalten sich wie erwartet.
Beachten Sie, dass, wenn ich die obere und linke Seite auf 16, aber die untere und rechte auf -16 stelle, das gewünschte Ergebnis erzeugt, aber ich sollte das nicht tun müssen? Wo gehe ich falsch?
Vielen Dank.
Völlig logisch denke ich jetzt auf diese Weise, danke für eine solide Erklärung und Beispiel. :) –
Gern geschehen :) – Elvin