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:
Wie kann ich das Aussehen meiner UIDatePicker
ändern?
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.
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"
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.
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:
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.
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.
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
Dadurch werden auch Schriftarten an anderen Stellen in Ihrer App gesetzt (indem Sie die Systemschriftart durch Ihre Schriftart ersetzen).
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.
Eine Kombination von 2 UITableViews
ist der Weg zu gehen.
UITableView
ist eine Unteransicht von UIScrollView
und behandelt das folgende Ereignis
und scrollen Sie die Tabelle mit der folgenden Methode zur Mitte, um die Position zu erhalten:
%Vor%Hoffe, das hilft.
Tags und Links iphone ios ios5 uiappearance uidatepicker