Differenza tra leftAnchor e leadingAnchor?


120

Ho lavorato con i vincoli in Swift per iOS e la maggior parte delle convenzioni / documentazione di denominazione rendono le cose abbastanza autoesplicative, ma una cosa che mi ha recentemente confuso sono due coppie della classe NSLayoutXAxisAnchor:

leadingAnchor, leftAnchor

insieme a

trailingAnchor, rightAnchor

Quando ho impostato i vincoli a livello di codice nella mia app iOS, ho scoperto che posso usarli in modo totalmente intercambiabile. Se utilizzo leadingAnchor, eseguo l'app e osservo il comportamento, quindi uso leftAnchor, eseguo l'app e osservo il comportamento, funziona esattamente allo stesso modo.

Ho controllato la documentazione da developer.apple.com e i risultati sono esattamente gli stessi (ignorando la differenza nei nomi). Ad esempio, confrontando leadingAnchor e leftAnchor:

"Utilizza questo ancoraggio per creare vincoli con il bordo d'attacco della vista. Puoi combinare questo ancoraggio solo con un sottoinsieme degli ancoraggi NSLayoutXAxisAnchor. Puoi combinare un leadingAnchor con un altro leadingAnchor, un trailingAnchor o un centerXAnchor. Per ulteriori informazioni, consulta NSLayoutAnchor Class Riferimento."

confrontare con:

"Utilizza questo ancoraggio per creare vincoli con il bordo sinistro della vista. Puoi combinare questo ancoraggio solo con un sottoinsieme degli ancoraggi NSLayoutXAxisAnchor. Puoi combinare un leftAnchor con un altro leftAnchor, rightAnchor o centerXAnchor. Per ulteriori informazioni, consulta NSLayoutAnchor Class Riferimento."

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

Risposte:


273

Questo è stato trattato (brevemente) in uno dei video della WWDC 2015 sui misteri del layout automatico (penso che fosse la parte 1 ma vale la pena guardarli entrambi).

I vincoli sinistro e destro sono assoluti, si riferiranno sempre alla sinistra / destra dello schermo o del controllo. I vincoli iniziali e finali sono influenzati dalle impostazioni internazionali del dispositivo; Nelle impostazioni locali in cui la direzione di lettura è da sinistra a destra (inglese, francese, spagnolo e così via) è possibile utilizzare in modo intercambiabile le posizioni iniziali e sinistra (e finali e destra). Nelle lingue in cui la direzione di lettura è da destra a sinistra (ad es. Ebraico, arabo), "principale" sarà il lato destro e "finale" sarà il lato sinistro.

Il consiglio nel video era che dovresti quasi sempre usare interlinea / finale piuttosto che sinistra / destra a meno che tu non abbia un requisito specifico per l'assoluta sinistra / destra.

Considera la tipica "forma" di un'etichetta e di un campo di testo. Se si utilizzano vincoli iniziali / finali, si otterrà l'etichetta a sinistra e il campo di testo a destra per una lingua inglese e l'etichetta a destra, campo di testo a sinistra per una lingua ebraica.

Se hai creato un'app per bambini in cui insegnavi da sinistra a destra e hai sempre desiderato il pulsante "sinistra" a sinistra dello schermo, i vincoli sinistra / destra sarebbero appropriati


9
Ottima informazione, grazie per la risposta. Vorrei aver visto il video, quindi l'avrei saputo da solo! La contrassegnerò come risposta accettata. Grazie ancora
Michael Fourre
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.