2014-10-09 23 views
5

Auto-layout używa symbolu -, aby wskazać, że ograniczenie powinno korzystać z domyślnego odstępu. Czy istnieje sposób ustawienia priorytetu dla tego odstępu bez konieczności jawnego ustawiania wartości metryki?Jak ustawić priorytet dla domyślnych metryk odstępów w formacie wizualnym?

Na przykład poniższy format wizualny utworzy wiodące ograniczenie między myView, a jego podglądem, który jest równy domyślnej wartości Cocoa/CocoaTouch. Ale to ograniczenie ma priorytet: required.

@"H:|-[myView]"

Poniższa stworzą wiodącą ograniczenie o niższym priorytecie, ale wyraźnej wartości metryki muszą zostać określone: ​​

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

Chcę być w stanie dać wiodącym ograniczenie priorytet , ale nie jest to wyraźna metryka. Rozumowanie jest następujące: 1) Nie chcę zgadywać, jaka jest wartość firmy Apple, oraz 2) W przyszłości, jeśli Apple zmieni tę wartość.

Idealnie, chciałbym coś takiego następujący:

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

Ale nie są akceptowane gramatyki. Czy istnieje tajny ciąg formatu, który to osiągnie?

(nie sądzę, istnieje różnica między iOS i MacOS na coś takiego, ale jeśli tak, to ja targetting MacOS).

+0

Doskonałe pytanie. Stawić czoła dokładnie temu samemu problemowi. Wygląda na to, że nie znalazłeś jeszcze odpowiedzi, prawda? – Vince

+0

Nie, przepraszam. W dokumentacji, notatkach do wydania i filmach z WWDC nie natknąłem się na nic. Jeśli jest jakiś sposób, albo obejrzałem go dokładnie, albo nieudokumentowane. – kennyc

+0

Czy ktoś już znalazł rozwiązanie tego problemu? –

Odpowiedz

0

Nie można ustawić priorytet dla domyślnego odstępu w formacie wizualnym ograniczenia. Możesz to zrobić tylko wtedy, gdy utworzysz ograniczenie jawnie.

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

można uzyskać odstęp domyślny przez atrybuty specifiying jak leadingMargin i trailingMargin zamiast używać tylko wiodących i spływu.