2014-10-09 6 views
5

Il layout automatico utilizza il simbolo - per indicare che un vincolo deve utilizzare la spaziatura predefinita. C'è un modo per impostare la priorità su tale spaziatura senza dover impostare esplicitamente un valore di metrica?Come si imposta una priorità sulla metrica di spaziatura predefinita per i layout automatici in un formato visivo?

Ad esempio, il seguente formato visivo creerà un vincolo principale compreso tra myView e il superview corrispondente al valore predefinito Cocoa/CocoaTouch. Ma quel vincolo ha una priorità di required.

@"H:|-[myView]"

deve essere specificato quanto segue creerà un vincolo leader con una priorità più bassa, ma un valore metrico esplicito:

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

Voglio essere in grado di dare il vincolo che porta una priorità , ma non una metrica esplicita. Il ragionamento è che 1) Non voglio indovinare quale sia il valore di Apple e 2) A prova di futuro se Apple cambia quel valore.

Idealmente, mi piacerebbe qualcosa di simile seguente:

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

Ma né sono accettati grammatica. C'è una stringa di formato segreta che raggiungerebbe questo?

(non credo che ci sia una differenza tra iOS e MacOS per qualcosa di simile, ma se c'è, io sto con i clienti destinati MacOS.)

+0

Ottima domanda. Di fronte allo stesso identico problema adesso. Sembra che tu non abbia ancora trovato la risposta, vero? – Vince

+0

No, mi dispiace. Non ho trovato nulla nella documentazione, nelle note di rilascio o nei video del WWDC. Se c'è un modo, ho guardato su di esso o non è documentato. – kennyc

+0

Qualcuno ha già trovato una soluzione a questo? –

risposta

0

Non è possibile impostare la priorità per la spaziatura di default in formato visivo vincoli. Puoi farlo solo quando crei un vincolo in modo esplicito.

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

è possibile ottenere la spaziatura di default per attributi che specificano come leadingMargin e trailingMargin invece di usare solo leader e finali.

Problemi correlati