2013-10-30 10 views
10

Ho un'app con UIPickerView. Sto tornando una visualizzazione personalizzata con il metodoUIPickerView con viste personalizzate interrotte in iOS7

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 

Sembrava bene in iOS 6. In iOS 7, non tanto - schermata qui sotto.

Si noti che nelle celle che non hanno il fuoco, la seconda e la terza colonna si sovrappongono. La fila centrale è corretta.

Qualche suggerimento?

enter image description here

+0

Che strano. Ne ho creato uno per testarlo. Ma tutto è ok. Esempio http://snipt.org/BaIi0/Default. –

risposta

7

Sembra che per una strana ragione, se la larghezza di una colonna è maggiore di 1/3 della larghezza della vista selettore le interruzioni di layout. Quindi se hai una vista picker da 320 pixel in larghezza o inferiore a 106, funziona, ma 107 o superiore è sbagliato, indipendentemente dal fatto che tu abbia 2,3,4 ... componenti. Veramente strano.

+0

L'unica soluzione che vedo finora è aumentare la larghezza del primo componente e diminuire la larghezza degli altri su iOS 7. – imihaly

+0

Grazie! Succede ancora oggi. – Frade

1

Come già detto nel suo post precedente, sembra che ciò accada solo se il valore widthForComponent per il componente LAST è superiore a 106 pixel. Gli altri componenti possono restituire un valore superiore a 106 e funzionerà correttamente. Inoltre, se si restituisce una vista di larghezza inferiore rispetto al valore restituito da widthForComponent, la vista verrà centrata, ma verrà spostata a sinistra di circa 10 pixel.

0

Ho avuto un problema simile, ma invece stavo visualizzando semplici numeri. Vedi my similar question. La risposta breve è che ho dovuto suddividere i componenti in diverse UIPickerViews.

Problemi correlati