2014-10-09 5 views
5

Auto-Layout verwendet das Symbol -, um anzugeben, dass eine Einschränkung den Standardabstand verwenden soll. Gibt es eine Möglichkeit, die Priorität für diesen Abstand festzulegen, ohne explizit einen Metrikwert festlegen zu müssen?Wie legen Sie eine Priorität für den Standardabstandsmesswert für automatische Layouts in einem visuellen Format fest?

Zum Beispiel erzeugt das folgende visuelle Format eine führende Einschränkung zwischen myView und seiner Superansicht, die dem Cocoa/CocoaTouch-Standardwert entspricht. Diese Einschränkung hat jedoch eine Priorität von required.

@"H:|-([email protected])-[myView]"

ich die führende Einschränkung eine Priorität geben möchten in der Lage sein:

@"H:|-[myView]"

Im Folgenden wird eine führende Einschränkung mit einer niedrigeren Priorität, aber eine explizite Metrikwert schaffen muss angegeben werden , aber keine explizite Metrik. Der Grund dafür ist, dass 1) ich nicht raten muss, was Apples Wert ist und 2) zukunftssicher, wenn Apple diesen Wert ändert.

Idealerweise würde ich etwas wie das folgende mag:

@"H:|-(@750)-[myView]" oder @"H:|-([email protected])-[myView]"

Aber weder sind Grammatik akzeptiert. Gibt es eine geheime Format-Zeichenfolge, die dies erreichen würde?

(Ich glaube nicht, es gibt einen Unterschied zwischen iOS und MacOS für so etwas wie, aber wenn es, ich bin Targeting MacOS.)

+0

Ausgezeichnete Frage. Genau das gleiche Problem jetzt. Scheint du hast die Antwort noch nicht gefunden, oder? – Vince

+0

Nein, tut mir leid. In der Dokumentation, den Versionshinweisen oder WWDC-Videos wurde nichts gefunden. Wenn es einen Weg gibt, habe ich entweder drübergesehen oder es ist nicht dokumentiert. – kennyc

+0

Hat jemand schon eine Lösung gefunden? –

Antwort

0

Sie können Priorität im visuellen Format für Standardabstand nicht festgelegt Einschränkungen. Sie können dies nur tun, wenn Sie eine Einschränkung explizit erstellen.

let constraint = NSLayoutConstraint(item: myView, attribute: .leadingMargin, relatedBy: .equal, toItem: superview, attribute: .leadingMargin, multiplier: 1, constant: 0) 
constraint.priority = 750 

Sie können den Standardabstand erhalten, indem folgende Einzelheiten enthält Attribute wie leadingMargin und trailingMargin statt mit nur führenden und Hinter.

Verwandte Themen