Wenn Sie die Titelfarbe eines UIButton
mit Aussehen setzen, erhalten die UIMenuItems
in UIMenuController
von UITextView
die gleiche Farbe.
applicationDidFinishLaunching
: Gibt es eine Möglichkeit, es zu unterdrücken? oder
geben Sie eine UIMenuItems
eine andere Farbe?
Mit appearanceWhenContainedIn UITextview
Ich habe versucht, das Aussehen für Schaltflächen in TextViews mit
[UIButton appearanceWhenContainedIn:[UITextView class], nil]
festlegen
Aber das hat offensichtlich nicht funktioniert, da das UIMenuController
nicht in der TextView ist.
Mit appearanceWhenContainedIn UIMenuController/UIMenuItem
Ist nicht möglich, da beide das UIAppearanceContainer-Protokoll nicht implementieren.
Ich habe zwei Möglichkeiten gefunden, um dieses Problem zu beheben.
Hier ist ein Screenshot des Ergebnisses der folgenden Lösungen:
Der UIMenuController ist nicht in der Ansichtenhierarchie von View Controller enthalten. Sie können also Ihre UIButton-Farbe auf diese Weise definieren ( anstatt , um die globale Schaltfläche Darstellung festzulegen):
Schnell:
%Vor%Ziel-C:
%Vor%Diese Lösung funktioniert in den meisten Fällen. Wenn Sie jedoch die delete-Schaltfläche oder die Aktionstaste Tabellenansichtszellen verwenden, wird auch die festgelegte Farbe verwendet und Sie können diese Farbe nicht ändern durch Aussehen Proxy.
Die zweite Lösung verwendet direkt den Klassennamen private UIButton , der von Apple im Menü-Controller verwendet wird. Ich würde niemals empfehlen, auf eine private Apple-Klasse (und darüber hinaus durch seinen Namen) zuzugreifen, aber in diesem speziellen Fall von Menu Controller-Farbanpassungen denke ich, dass das die beste Lösung ist. Sie können damit die Art und Weise definieren, wie Ihre Ansichten aussehen.
Schnell:
Definieren Sie das Erscheinungsbild Ihrer globalen Schaltflächentitelfarbe:
%Vor%Spezifische Ausnahme für den MenuController:
%Vor%Ziel-C:
Definieren Sie das Erscheinungsbild Ihrer globalen Schaltflächentitelfarbe:
%Vor%Spezifische Ausnahme für den MenuController:
%Vor%Tags und Links uibutton uiappearance uimenucontroller