In meiner iPhone-App habe ich einen UIButton, den ich in Interface Builder erstellt habe. Ich kann es so erfolgreich in meinem Code aktivieren und deaktivieren ...
sendButton.enabled = YES;
oder
sendButton.enabled = NO;
Das optische Erscheinungsbild der Schaltfläche ist jedoch immer gleich! Es ist nicht verblasst oder grau. Wenn ich jedoch versuche, darauf zu klicken, wird es wie erwartet aktiviert oder deaktiviert. Vermisse ich etwas Sollte es nicht verblasst oder grau aussehen?
ios
iphone
cocoa-touch
uibutton
Andy A.
quelle
quelle
Antworten:
Sie können folgenden Code verwenden:
quelle
Ändern Sie einfach die Statuskonfiguration in "Deaktivieren" und wählen Sie das gewünschte Hintergrundbild für den deaktivierten Status aus
quelle
Eine andere Möglichkeit besteht darin, die Textfarbe (z. B. hellgrau) für den deaktivierten Status zu ändern.
Wählen Sie im Storyboard-Editor
Disabled
aus derState Config
Popup-Schaltfläche. Verwenden Sie dieText Color
Popup-Schaltfläche, um die Textfarbe zu ändern.Verwenden Sie im Code die
-setTitleColor:forState:
Nachricht.quelle
Versuchen Sie, die verschiedenen Bilder für
UIControlStateDisabled
(deaktiviertes graues Bild) undUIControlStateNormal
(normales Bild) so einzustellen, dass die Schaltfläche den deaktivierten Status für Sie generiert.quelle
[ UIButton setAttributedTitle:forState:]
. Erstellen Sie Ihre zugewiesene Zeichenfolge, bei der Ihre Textvordergrundfarbe auf eine transparente Farbe eingestellt ist.Damit die Schaltfläche beim Deaktivieren ausgeblendet wird, können Sie Alpha dafür festlegen. Es gibt zwei Möglichkeiten für Sie:
Erster Weg : Wenn Sie alle Ihre Schaltflächen in Ihrer App beantragen möchten, können Sie
extension
für UIButton wie folgt schreiben :Zweiter Weg : Wenn Sie nur einige Schaltflächen in Ihrer App beantragen möchten, können Sie eine benutzerdefinierte Klasse aus UIButton wie unten schreiben und diese Klasse verwenden, für die Sie sich bewerben möchten:
quelle
Wenn Sie eine Textschaltfläche verwenden, können Sie die Instanzmethode in viewDidLoad einfügen
Beispiel:
quelle
Sie können verwenden,
adjustsImageWhenDisabled
was Eigentum von istUIButton
(@property (nonatomic) BOOL adjustsImageWhenDisabled)
Ex:
quelle
Dies ist eine ziemlich alte Frage, aber es gibt einen sehr einfachen Weg, dies zu erreichen.
myButton.userInteractionEnabled = false
Dadurch werden nur Berührungsgesten deaktiviert, ohne dass das Erscheinungsbild der Schaltfläche geändert wird
quelle
In Swift :
oder
quelle
Set
title color
für verschiedene Zustände:Verwendung: (Die Textfarbe ändert sich automatisch.)
quelle
Erstellen Sie eine Erweiterung in Swift> 3.0 und nicht jede Schaltfläche für sich
quelle
Sie können die beiden ersten Antworten verwenden und erhalten ein besseres Ergebnis.
Ändern Sie im Attributinspektor (wenn Sie die Schaltfläche auswählen) die Statuskonfiguration in Deaktiviert, um das neue Bild festzulegen, das angezeigt wird, wenn es deaktiviert wird (entfernen Sie die Markierung in der Prüfung Inhalt-> Aktiviert, um es zu deaktivieren). .
Wenn Sie den Status in "Aktiviert" ändern, wird das Image aus diesem Status geladen.
Das Hinzufügen der Alpha-Logik ist ein gutes Detail.
quelle
Swift 4+
Wie benutzt man
quelle
Ich bin auf das gleiche Problem fixiert. Das Einstellen von Alpha ist nicht das, was ich will.
UIButton
hat " Hintergrundbild " und " Hintergrundfarbe ". Für BildUIButton
hat eine Eigenschaft als@property (nonatomic) BOOL adjustsImageWhenDisabled
Das Hintergrundbild wird heller gezeichnet, wenn die Schaltfläche deaktiviert ist. Für die Hintergrundfarbe funktioniert die Einstellung von Alpha, Ravins Lösung, einwandfrei.
Zuerst müssen Sie überprüfen, ob Sie das Kontrollkästchen "Deaktiviert passt Bild" unter Dienstprogrammattribute deaktiviert haben.
Überprüfen Sie dann die Hintergrundfarbe für diese Schaltfläche.
(Hoffe, es ist hilfreich. Dies ist ein alter Beitrag; möglicherweise haben sich die Dinge in Xcode geändert.)
quelle
Es sieht so aus, als ob der folgende Code gut funktioniert. In einigen Fällen funktioniert dies jedoch nicht.
Wenn der obige Code nicht funktioniert, wickeln Sie ihn bitte in den Haupt-Thread ein. so
wenn Sie mit schnell gehen, so
Wenn Sie UIButton angepasst haben, fügen Sie dies der Button-Klasse hinzu.
Vielen Dank und viel Spaß beim Codieren !!!
quelle
Wenn sich das
UIButton
im kombinierten Zustand vonselected
und befindetdisabled
, ist sein ZustandUIControlStateSelected | UIControlStateDisabled
.Der Zustand muss also folgendermaßen angepasst werden:
Ein Ansatz besteht darin, die Unterklasse
UIButton
wie folgt zu unterteilen:quelle
Diese Frage hat viele Antworten, aber alle sehen nicht sehr nützlich aus, wenn Sie wirklich backgroundColor verwenden möchten, um Ihre Schaltflächen zu gestalten. UIButton hat eine nette Option, um verschiedene Bilder für verschiedene Steuerzustände festzulegen, aber es gibt nicht die gleiche Funktion für Hintergrundfarben. Eine der Lösungen besteht darin, eine Erweiterung hinzuzufügen, die Bilder aus Farbe generiert und auf die Schaltfläche anwendet.
Nur ein Problem mit dieser Lösung: Diese Änderung wird nicht auf Schaltflächen angewendet, die im Storyboard erstellt wurden. Für mich ist dies kein Problem, da ich die Benutzeroberfläche lieber aus Code formatiere. Wenn Sie Storyboards verwenden möchten, dann etwas zusätzliche Magie mit
@IBInspectable
erforderlich.Die zweite Option ist die Unterklasse, aber ich ziehe es vor, dies zu vermeiden.
quelle
Möglicherweise können Sie Ihre Schaltfläche in Unterklassen unterteilen und Ihre isEnabled-Variable überschreiben. Der Vorteil ist, dass Sie an mehreren Stellen wiederverwenden können.
quelle
.h:
quelle