2015-10-06 13 views
44

Ho lavorato con i vincoli a Swift per iOS, e la maggior parte delle convenzioni di denominazione/documentazione faccio cose abbastanza auto esplicativo, ma una cosa che mi ha recentemente confuso è di due paia di classe NSLayoutXAxisAnchor:Differenza tra leftAnchor e leadingAnchor?

leadingAnchor, leftAnchor 

insieme a

trailingAnchor, rightAnchor 

Quando ho posto vincoli di programmazione nel mio app iOS, ho scoperto che posso usare questi totalmente intercambiabile. Se utilizzo leadingAnchor, eseguo l'app e osserviamo il comportamento, quindi usiamo leftAnchor, eseguo l'app e osserviamo il comportamento, funziona esattamente allo stesso modo.

ho verificato la documentazione da developer.apple.com, ed i risultati sono anche esattamente lo stesso (ignorando la differenza nei nomi). Per esempio confrontando il leadingAnchor e leftAnchor:

"Usa questo ancoraggio per creare vincoli con bordo d'attacco della vista È possibile combinare solo questo ancoraggio con un sottoinsieme del NSLayoutXAxisAnchor ancore È possibile combinare un leadingAnchor con .. un altro leadingAnchor, un trailingAnchor o un centroXAnchor. Per ulteriori informazioni su , consultare NSLayoutAnchor Reference di riferimento. "

confronta con:

"Utilizzare questa ancoraggio per creare vincoli con bordo sinistro della vista È possibile combinare solo questo ancoraggio con un sottoinsieme delle NSLayoutXAxisAnchor ancore È possibile combinare un leftAnchor con.. un altro leftAnchor, un rightAnchor o un centroXAnchor. Per ulteriori informazioni, vedere Riferimento alla classe NSLayoutAnchor. "

Qualcuno sa se c'è qualche differenza tra queste proprietà?

risposta

102

Questo è stato coperto (brevemente) in uno dei video del WWDC 2015 su Misteri di Autolayout (penso che fosse la parte 1 ma entrambi valgono la pena guardare).

sinistro e destro vincoli sono assoluti, saranno sempre riferiti alla sinistra/destra dello schermo o il controllo. I vincoli iniziali e finali sono influenzati dalle impostazioni locali del dispositivo; Nelle località in cui la direzione di lettura è da sinistra a destra (inglese, francese, spagnolo e così via) che porta a sinistra & (e trailing &) può essere utilizzata in modo intercambiabile. Nelle localizzazioni in cui la direzione di lettura è da destra a sinistra (ad esempio ebraico), il "leader" sarà il lato destro e il "trailing" sarà il lato sinistro.

La consulenza nel video era si dovrebbe quasi sempre l'uso che porta/finale, piuttosto che a sinistra/destra a meno che non si dispone di un requisito specifico per assoluto sinistra/destra.

Considerare il tipico 'modulo' di un'etichetta e un campo di testo. Se si utilizzano i vincoli iniziali/finali, si otterrà l'etichetta a sinistra e il campo di testo a destra per le impostazioni internazionali in inglese e l'etichetta a destra, il campo di testo a sinistra per le impostazioni locali ebraiche.

Se hai fatto app per bambini dove si insegnavano la destra dalla sinistra e si sempre voluto il pulsante 'sinistra' sul lato sinistro dello schermo, poi a sinistra/vincoli di destra sarebbe opportuno

+3

informazioni eccellente, grazie per la risposta. Vorrei aver visto il video, quindi avrei saputo questo da solo! Segnalo come risposta accettata. Grazie ancora –