Anpassen von text Farbe des UIDatePicker für iOS7 (genau wie Postfach hat)
Ich bin mit dem frustrierenden dilemma. Ich habe recherchiert, oben und unten, und kann deutlich sehen, dass Apple nicht will, dass wir uns Manipulationen mit iOS 7. Nun gut, ich will zu manipulieren. Und das team der Mailbox eindeutig herausgefunden, wie es zu tun, und genehmigt zu bekommen.
Die Hauptsache, die ich versuche zu erreichen ist, ändern Sie die label-Farbe auf weiß.
Mein Erster Gedanke war, Sie mit einem eigenen UIPickerView, dass nur imitiert UIDatePicker, aber ich glaube nicht, dass dies der Fall ist.
Ich vergrößert auf einem kleinen fragment und entdeckt Reste eines normalen UIDatePicker (schwarze Linien) zusammen mit clipping auf den Buchstaben "W".
Nun habe ich durchforstet, hoch und niedrig. Habe einige runtime-hacking, versaut mit UIAppearance, und sogar gegraben, in einige private APIs nur um zu sehen, ob dies möglich ist.
Bekam ich nah, sehr nah, aber es war eine private API, und wenn Sie die Bildlauf schnell genug die Etiketten drehen würde wieder schwarz.
Ich bin völlig ratlos, wie Sie dies tun, ohne a) brechen Sie die Regeln, oder b) verbringen unzählige Stunden reimplementing UIDatePicker.
Postfach, sagen Sie mir Ihre Geheimnisse! Und wenn jemand irgendwelche Vorschläge (und ich meine jeden), lasst es mich bitte wissen.
Dies ist auch der nächste, den ich bekommen habe:
InformationsquelleAutor der Frage rnystrom | 2013-11-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauche ich ähnliches für meine app und landeten, gehen den langen Weg Runde. Es ist wirklich schade, gibt es nicht eine einfachere Möglichkeit, einfach auf eine weiß-text-version von UIDatePicker.
Den code unten wird eine Kategorie auf UILabel zu zwingen, den text des Labels die Farbe weiß, wenn die setTextColor: Nachricht wird gesendet, um das label. Um dies nicht für jedes label in der app habe ich gefiltert, um nur bewerben, wenn es eine Untersicht eines UIDatePicker Klasse. Schließlich, ein paar der labels haben Ihre Farben festlegen, bevor Sie Hinzugefügt werden, um Ihre superviews. Für den Fang dieser code überschreibt den willMoveToSuperview: Methode.
Wäre es wahrscheinlich besser sein, teilen Sie die unten in mehr als eine Kategorie, aber ich habe Sie alle hier, für die einfache Buchung.
InformationsquelleAutor der Antwort Sig
Hier ist eine gut funktionierende snippet. Getestet auf iOS 7.18.0 und 8.1.
Habe ich eine einfache Bedingung zu brechen, die die Kompilierung, wenn Sie Gebäude für iOS - > 8.1weil ich nicht sicher sein kann, dass dieser hack funktioniert, und Sie wollen nicht zu haben, stürzt in der Produktion, weil dieser.
Den
setHighlightsToday:
- Selektor verwendet wird, weilUIDatePicker
ist mit[UIColor blackColor]
standardmäßig zur Anzeige des aktuellen Datums.InformationsquelleAutor der Antwort arturgrigor
Fand ich den trick, dass die schriftart Farbe zu jeder Farbe und auch nicht Chaos, die bis Heute mit label.
Hier ist das Ergebnis:
Und alle die Kredite für diese Lösung geht auf diesen Beitrag in anderen thread:
https://stackoverflow.com/a/33459744/1236334
InformationsquelleAutor der Antwort Klemen Zagar
Dieser arbeitete für mich.
InformationsquelleAutor der Antwort fnc12
Die todsichere Methode, dies zu tun ist, um zu Durchlaufen und Untersichten, und Untersichten von Untersichten, bis Sie die Klasse zu finden, die Sie suchen (in diesem Fall eine Art UILabel), und legen Sie manuell die Eigenschaften.
Finden, den Sie suchen, ich schlage vor, Sie verwenden eine Anwendung wie X-ray oder Offenbaren zu untersuchen view-Hierarchie zu bekommen, die genau die Klasse name, und dann:
Dies ist eine sehr fragile Art und Weise, Dinge zu tun, aber es nicht technisch jemals ein privates API, und es würde nicht erschrecken Apple. Zurück in iOS 5, die ich verwendet, um Dinge wie dieses zu machen, UIAlertViews größeren iPads, um mehr text ohne eingebettete scroll-view.
Einer Menge von Versuch und Irrtum kann notwendig sein, und es ist vielleicht nicht hübsch Aussehen, aber es funktioniert.
(Wie ein sehr intelligenter Kerl, den ich kenne, sagte: "alle code verloren für den compiler, wie Tränen im Regen.")
InformationsquelleAutor der Antwort Swizzlr