2010-03-04 16 views
7

Non riesco a creare un'interfaccia utente RTL nell'applicazione iPhone. Il framework non sembra avere alcun supporto per i linguaggi RTL. L'unica cosa è l'allineamento all'interno delle etichette, che è bello, ma è in conflitto con il comportamento di altri controlli.Interfaccia utente da destra a sinistra in iPhone (ebraico)

La domanda è: Esiste un codice funzionante per un TableView RTL? Qualcosa che gestisse i pulsanti di divulgazione a sinistra, i titoli di sezione da allineare a destra, la vista indice da allineare a sinistra?

Per quanto ho capito che non posso spostare la vista indice del Tableview, devo sovrapporre un certo controllo personalizzato ...

Eventuali suggerimenti/puntatori/Esempi?

p.s. questa non è una duplicazione di questa domanda: Right to Left Alignment for UITableView poiché quello che sto cercando è una personalizzazione più profonda, non solo un nuovo tipo di CellView.

(Aggiornamento: Mar 10) Per ora - ho rimosso il supporto per indexView dal tableView a tutti, attuato le celle come visualizzazioni personalizzate da solo (con i tasti di divulgazione a sinistra), e personalizzato l'intestazione/piè di pagina il tavolo pure. l'unica cosa che rimane è il Index View.

+0

Ho scritto un trainer vocabolario ebraico per l'iPhone e fino a iPhone OS 3 ho dovuto girare le stringhe prima di visualizzarle. Dal momento che 3.0 non ho avuto problemi con lo script RTL ma poi sto usando solo i controlli di base. –

risposta

1

Non credo che ci sia un modo "corretto" di fare questo, ma qui è una soluzione:

All'interno della vista, creare un UIView e aggiungere un UITableView ad esso. Aggiungi l'UIView come subView della tua vista "master" e specifica i suoi limiti in modo che si trovino al di fuori del lato sinistro dello schermo in modo che tutti gli indici tranne gli indici vengano ritagliati dalla vista "master". Ora tutto ciò che devi fare è aggiungere un po 'di codice per sincronizzare le due tabelle quando viene toccato un indice dalla subview.

Ovviamente questa non è la soluzione migliore, ma è quella che potrebbe funzionare.

Buona fortuna.

+0

hai ragione, questa sembra la soluzione (anche se è un peccato che devi essere giù e sporco per averlo). ogni occasione che hai visto implementato da qualche parte e può condividere un pezzo di codice? – reflog

0

Penso che la sottoclasse UITableViewCell per ottenere il comportamento che si sta cercando è il modo per aggirare questo. È abbastanza banale farlo.

Tuttavia, non sono abbastanza sicuro di come Apple reagirebbe in termini di approvazione dell'applicazione per l'AppStore. Hanno linee guida per l'interfaccia utente abbastanza rigide che indicano che l'accessorio in una cella di tabella si trova sul lato destro di ogni cella ... ma sono sicuro che sarebbe ragionevole con questo dato il tuo requisito.

+0

Grazie, ma non è proprio una risposta alla domanda, come puoi vedere ho già creato una sottoclasse di "TableCell", stavo chiedendo di "IndexView". – reflog

0

Non ho esperienza con testo da destra a sinistra ma hai provato a impostare l'allineamento del testo a destra?

[cell.textLabel setTextAlignment:UITextAlignmentRight]; 
4

Dato che le applicazioni integrate nel non capovolgere la loro disposizione quando si cambia la lingua dell'interfaccia utente per l'ebraico, penso che non si dovrebbe fare neanche. Se la tua app utilizza un layout RTL mentre tutte le altre app utilizzano un layout LTR, potrebbe essere abbastanza confuso.

Forse Apple migliorerà il supporto RTL un giorno. Se segui i controlli standard, probabilmente riceverai la maggior parte di questi miglioramenti gratuitamente.

Problemi correlati