2015-01-14 7 views
8

Ho un'app che supporta 2 lingue, inglese e arabo. L'inglese è lasciato a destra & L'arabo è da destra a sinistra.come cambiare userInterfaceLayoutDirection

Ho un controller denominato LanguageViewController. Ci sono due pulsanti: arabo & inglese. Quando un utente fa clic su "Arabo", la lingua della mia app cambia dall'inglese all'arabo. Uso il layout automatico nel mio progetto.

Quando la lingua viene modificata, mi aspetto che la posizione dell'oggetto venga specchiata allo stesso tempo. ma non è & quando chiudo la mia app ed eseguo di nuovo, la posizione dell'oggetto viene specchiata correttamente.

Nella domanda: How to force "Respect Language Direction" from RTL to LTR and vice versa @Raz ha avuto lo stesso problema. ma non voglio costruire una nuova storia. Quando la lingua viene modificata da En a Ar e si esce dall'app, il valore di userInterfaceLayoutDirection passa da UIUserInterfaceLayoutDirectionLeftToRight a UIUserInterfaceLayoutDirectionRightToLeft. Ho usato NsLog per vedere il valore di userInterfaceLayoutDirection. Quando premo il pulsante "Arabic" il valore non cambia, ma quando corro di nuovo il valore è cambiato. La mia domanda è come forzare il cambio userInterfaceLayoutDirection senza uscire e senza caricare il nuovo storyboard?

risposta

1

In che modo si modifica esattamente la lingua preferita dell'applicazione con i pulsanti?

L'utenteInterfaceLayoutDirection di un'app viene impostata una volta al momento dell'avvio. Al momento non è possibile modificarlo mentre è in esecuzione un'app.

+0

così. cosa fare quando l'utente cambia la lingua nelle impostazioni dell'applicazione (non impostazione ios). Non voglio forzare l'utente a uscire dalla mia app ed eseguire di nuovo. se l'utente non chiude la mia app, la direzione del vincolo per i pulsanti e le etichette non cambia. e questo non è il mio caso. –

+0

Non c'è modo di fare ciò che stai cercando di realizzare al momento. – lensovet

+0

Per curiosità, la commutazione di lingua in-app è qualcosa che gli utenti desiderano? Perché non eseguire sempre solo il linguaggio di sistema preferito? – lensovet