2013-10-30 13 views
10

Ich habe eine App mit einem UIPickerView. Ich bin eine benutzerdefinierte Ansicht mit der Methode der RückkehrUIPickerView mit benutzerdefinierten Ansichten in iOS7 gebrochen

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

Es sah gut aus in iOS 6. In iOS 7, nicht so sehr - Bildschirm unten gedreht.

Beachten Sie, dass in den Zellen, die keinen Fokus haben, die zweite und dritte Spalte überlappen. Die zentrale Zeile ist korrekt.

Irgendwelche Vorschläge?

enter image description here

+0

Das ist seltsam. Ich habe einen erstellt, um es zu testen. Aber alles ist in Ordnung. Beispiel http://sniptor.org/BaIi0/Default. –

Antwort

7

Es für einen seltsamen Grund scheint, dass, wenn die Breite einer Spalte höher als 1/3 der Breite der Picker Ansicht ist, die das Layout bricht. Also, wenn Sie eine 320 Pixel breite Picker Ansicht 106 oder weniger arbeiten, aber 107 oder höher ist falsch, unabhängig davon, ob Sie 2,3,4 ... Komponenten haben. Wirklich seltsam.

+0

Die einzige Problemumgehung, die ich bisher gesehen habe, ist, die Breite der ersten Komponente zu vergrößern und die Breite der anderen auf iOS 7 zu verringern. – imihaly

+0

Danke! Es passiert immer noch heutzutage. – Frade

1

Wie imihaly sagte in seinem früheren Beitrag sieht es aus wie dies nur passiert, wenn der widthForComponent Wert für die LETZTE Komponente mehr als 106 Pixel ist. Die anderen Komponenten können einen Wert über 106 zurückgeben und es wird gut aussehen. Wenn Sie eine Ansicht zurückgeben, deren Breite kleiner ist als der von widthForComponent zurückgegebene Wert, wird die Ansicht zwar zentriert, jedoch um etwa 10 Pixel nach links versetzt.

0

Ich hatte ein ähnliches Problem, aber ich zeigte stattdessen einfache Zahlen. Siehe my similar question. Kurze Antwort ist, dass ich die Komponenten in verschiedene UIPickerViews aufteilen musste.

Verwandte Themen