Benutzerdefinierter iOS UIDatepicker mit UIAppearance

7

Die neue Alarm-App von UNIQLO hat eine benutzerdefinierte UIDatePicker :

Und ich möchte meine eigene benutzerdefinierte UIDatePicker erstellen.

Ich habe versucht, das Aussehen des DatePickers zu ändern, aber die Suche nach UI_APPEARANCE_SELECTOR in UIDatePicker gibt nichts zurück.

Das bedeutet, dass es nicht möglich ist, irgendwelche Werte zu ändern, wie in der Dokumentation:

  

Unterstützung Anpassung der Darstellung, eine Klasse muss dem UIAppearanceContainer-Protokoll entsprechen und relevante Zugriffsmethoden müssen mit UI_APPEARANCE_SELECTOR gekennzeichnet sein.

Wie kann ich das Aussehen meiner UIDatePicker ändern?

    
daidai 01.06.2012, 05:03
quelle

8 Antworten

23

Die API bietet keine Möglichkeit, dies zu tun. Sie können ein ziemlich überzeugendes Replikat selbst mit einem UIPickerView erstellen, anstatt UIDatePicker zu verwenden.

Da der UIDatePicker oder UIPickerView nicht über UI_APPEARANCE_SELECTOR verfügt, kann der UIDatePicker-Inhalt nicht als UIControl angezeigt werden. Er hat keinen Delegaten, so dass er sein ursprüngliches Aussehen hat, während er im Falle von UIPickerView seinen Inhalt ändern kann. Aussehen ähnlich wie in UITableView.

%Vor%

Sieh dir das an.

    
Kuldeep 04.07.2012, 12:34
quelle
4

Fügen Sie diese Methode in Ihrer Implementierungsdatei hinzu

%Vor%

Wenn Sie Ihre App ausführen, werden alle Subviews von datePicker auf Ihrer Konsole angezeigt. Wählen Sie einfach einen Index aus und ändern Sie ihn einzeln.

Ändern Sie die viewDidLoad und fügen Sie diesen Code

ein %Vor%

In diesem Fall ändere ich die Hintergrundfarbe von Index "0", "4", "11"

    
Roger 10.07.2012 09:43
quelle
3

Mit iOS 5 ist die UIAppearance wurde eingeführt, mit dem Sie mehrere UI-Elemente anpassen können. UIDatePicker passiert dieses Protokoll, so dass dies wahrscheinlich der einfachste Weg ist, dies zu tun. Das heißt, wenn Sie nur iOS 5-Benutzer unterstützen möchten. Matthews Option wäre wahrscheinlich die nächstbeste Sache, die auch mit älteren iOS-Versionen funktionieren sollte.

    
Scott Berrevoets 01.06.2012 05:32
quelle
3

Es scheint ziemlich schwierig zu sein, die Art zu ändern, in der ein UIDatePicker erscheint.

Das Beispiel, das Sie mir gegeben haben, ist eine ausgefeilte Anpassung eines einfachen UIPickerView mit zwei Spalten und wahrscheinlich einem simulierten unendlichen Scroll (wie es Apple in der Datumsauswahl tut, und es ist ziemlich einfach zu realisieren).

Sie können wenig von UIDatePicker über den UIAppearance Proxy ändern, wie in diesem Beispiel zu sehen ist:

%Vor%

Wenn Sie diesen Code zu Beginn der Anwendung verwenden (versuchen Sie es einfach), können Sie den Aspekt nur einiger Hauptkomponenten der Datumsauswahl ändern.

Labels sind unmöglich , um sie anzupassen (und dieser Testcode beweist es); Offensichtlich werden sie jedes Mal, wenn Sie eine Spalte drehen, in Aspekt geändert, da sie in einen benutzerdefinierten UITableView -Controller gestellt werden.

Um diese Erscheinungen vollständig zu ändern, sollten Sie wahrscheinlich mit privaten APIs von Apple arbeiten, was letztendlich dazu führt, dass Ihre App abgelehnt wird.

Wenn Sie nur einen benutzerdefinierten Stunden-Minuten-Picker benötigen (wie in Ihrem Screenshot gezeigt), ist die vollständige Anpassung des Aussehens erreichbar, wobei nur die UIPickerView -Klasse erweitert oder ein entsprechender Delegat einer UIPickerView -Instanz zugewiesen wird.

Durch die

%Vor%

Methode für den Delegaten können Sie das einzelne Element der Auswahlansicht so anzeigen, wie Sie möchten. Dann müssen Sie die Datenquelle entsprechend handhaben, um die beiden Komponenten des Pickers praktisch unendlich zu machen.

    
marzapower 04.07.2012 13:58
quelle
0

Sie können selbst eines mit zwei UIScrollViews implementieren, eines für Stunden und eines für Minuten. Sie müssten nur den contentOffset jeder scrollview herausfinden, wenn er sich nicht mehr bewegt, was von der Spitze meines Kopfes so aussehen würde:

%Vor%

Nehmen Sie den Wert des Inhaltsoffsets und übersetzen Sie ihn in den Stunden- und Minutenwert, wahrscheinlich durch Teilen der y-Position des Inhaltsoffsets durch die 24 bzw. 60. Sie müssen das benutzerdefinierte Kunstwerk selbst erstellen.

    
Matthew Gillingham 01.06.2012 05:24
quelle
0

Um die Datumsauswahlfarbe zu ändern:

%Vor%

Und um die Schriftart zu ändern, weiß ich nur:

Erstellen Sie die Kategorie UIFont+System und fügen Sie diesen Code in

ein %Vor%

Dadurch werden auch Schriftarten an anderen Stellen in Ihrer App gesetzt (indem Sie die Systemschriftart durch Ihre Schriftart ersetzen).

    
Oleh Kudinov 24.10.2015 14:36
quelle
-1

Sie sollten den UIC-Katalog von Apple durchsuchen. Es verfügt über alle Methoden, in denen ein UIDatePicker verwendet werden kann, einschließlich der benutzerdefinierten Datumsauswahlmethode. Studieren Sie diesen Link developer.apple.com/library/ios/samplecode/UICatalog/. Außerdem haben sie einen Standard-Switch und die Navigationsleiste implementiert, die in letzterem angegeben ist.

    
IronManGill 01.06.2012 05:29
quelle
-1

Eine Kombination von 2 UITableViews ist der Weg zu gehen.

UITableView ist eine Unteransicht von UIScrollView und behandelt das folgende Ereignis

%Vor%

und scrollen Sie die Tabelle mit der folgenden Methode zur Mitte, um die Position zu erhalten:

%Vor%

Hoffe, das hilft.

    
Vimal Venugopalan 09.07.2012 14:44
quelle