Textfarbe in UIMenuController, die von der UIButton-Darstellung beeinflusst wird

9

Ich habe folgendes beobachtet:

Wenn Sie die Titelfarbe eines UIButton mit Aussehen setzen, erhalten die UIMenuItems in UIMenuController von UITextView die gleiche Farbe.

Code in applicationDidFinishLaunching :

%Vor%

Meine Frage:

Gibt es eine Möglichkeit, es zu unterdrücken? oder
geben Sie eine UIMenuItems eine andere Farbe?

Was ich versucht habe:

  1. 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.

  2. Mit appearanceWhenContainedIn UIMenuController/UIMenuItem
    Ist nicht möglich, da beide das UIAppearanceContainer-Protokoll nicht implementieren.

yinkou 20.10.2014, 09:05
quelle

1 Antwort

3

Ich habe zwei Möglichkeiten gefunden, um dieses Problem zu beheben.

Hier ist ein Screenshot des Ergebnisses der folgenden Lösungen:

Erste Lösung

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.

Zweite Lösung (meine bevorzugte)

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%     
Tanguy G. 25.02.2016, 13:34
quelle