W mojej aplikacji na iPhone'a mam UIButton, który utworzyłem w Interface Builder. Mogę z powodzeniem włączać i wyłączać to w moim kodzie ...
sendButton.enabled = YES;
lub
sendButton.enabled = NO;
Jednak wizualny wygląd przycisku jest zawsze taki sam! Nie jest wyblakły ani szary. Jeśli jednak spróbuję go kliknąć, jest on włączony lub wyłączony zgodnie z oczekiwaniami. Czy coś mi brakuje? Czy nie powinien wyglądać na wyblakły lub szary?
ios
iphone
cocoa-touch
uibutton
Andy A.
źródło
źródło
Odpowiedzi:
Możesz użyć następującego kodu:
źródło
po prostu zmień konfigurację stanu, aby wyłączyć i wybierz, co chcesz, obraz tła dla stanu wyłączonego
źródło
Inną opcją jest zmiana koloru tekstu (na przykład na jasnoszary) dla stanu wyłączenia.
W edytorze serii ujęć, wybrać
Disabled
zState Config
przycisku kontekstowego. UżyjText Color
wyskakującego przycisku, aby zmienić kolor tekstu.W kodzie użyj
-setTitleColor:forState:
wiadomości.źródło
Spróbuj ustawić różne obrazy dla
UIControlStateDisabled
(wyłączony szary obraz) iUIControlStateNormal
(normalny obraz), aby przycisk generował stan wyłączenia za Ciebie.źródło
[ UIButton setAttributedTitle:forState:]
. Utwórz swój przypisany ciąg, w którym kolor pierwszego planu tekstu jest ustawiony na przezroczysty kolor.Aby przycisk był wygaszony po wyłączeniu, możesz ustawić dla niego alfa. Masz dwie możliwości:
Pierwszy sposób : jeśli chcesz ubiegać się o wszystkie przyciski w swojej aplikacji, możesz napisać
extension
dla UIButton w ten sposób:Drugi sposób : jeśli chcesz tylko złożyć wniosek o niektóre przyciski w swojej aplikacji, możesz napisać niestandardową klasę z UIButton, jak poniżej, i użyć tej klasy, dla której chcesz się ubiegać:
źródło
Jeśli używasz przycisku tekstowego, możesz umieścić metodę instancji w viewDidLoad
przykład:
źródło
Możesz użyć tego,
adjustsImageWhenDisabled
co jest własnościąUIButton
(@property (nonatomic) BOOL adjustsImageWhenDisabled)
Dawny:
źródło
To dość stare pytanie, ale można to osiągnąć w bardzo prosty sposób.
myButton.userInteractionEnabled = false
Spowoduje to wyłączenie tylko wszelkich gestów dotykowych bez zmiany wyglądu przycisku
źródło
W Swift :
lub
źródło
Zestaw
title color
dla różnych stanów:Sposób użycia: (kolor tekstu zmieni się automatycznie)
źródło
Utwórz rozszerzenie w Swift> 3.0, a nie każdy przycisk samodzielnie
źródło
Możesz użyć obu pierwszych odpowiedzi i będzie to lepszy wynik.
W inspektorze atrybutów (po wybraniu przycisku) zmień konfigurację stanu na Wyłączone, aby ustawić nowy obraz, który będzie się pojawiał, gdy będzie wyłączony (usuń znacznik w polu Zawartość-> Włączone, aby go wyłączyć) .
A kiedy zmienisz stan na włączony, obraz załaduje ten z tego stanu.
Dodanie do tego logiki alfa to dobry szczegół.
źródło
Swift 4+
Jak używać
źródło
Utknąłem na tym samym problemie. Ustawienie alfa nie jest tym, czego chcę.
UIButton
zawiera „ obraz tła ” i „ kolor tła ”. W przypadku obrazuUIButton
ma właściwość as@property (nonatomic) BOOL adjustsImageWhenDisabled
Obraz tła jest jaśniejszy, gdy przycisk jest wyłączony. W przypadku koloru tła ustawienie alfa, roztwór Ravina, działa dobrze.
Najpierw musisz sprawdzić, czy odznaczyłeś pole „wyłączone dostosowuje obraz” w Utilities-Attributes.
Następnie sprawdź kolor tła tego przycisku.
(Mam nadzieję, że to pomocne. To jest stary post; coś mogło się zmienić w Xcode).
źródło
Wygląda na to, że poniższy kod działa dobrze. Ale w niektórych przypadkach to nie działa.
Jeśli powyższy kod nie działa, zawiń go w główny wątek. więc
jeśli pójdziesz szybko, w ten sposób
Ponadto, jeśli dostosowałeś UIButton, dodaj to do klasy Button.
Dziękuję i życzę miłego kodowania !!!
źródło
Jeśli
UIButton
jest w połączonym stanieselected
idisabled
, jego stan toUIControlStateSelected | UIControlStateDisabled
.Więc jego stan należy dostosować w następujący sposób:
Jedną z metod jest podklasa
UIButton
w następujący sposób:źródło
To pytanie ma wiele odpowiedzi, ale wszystkie one wyglądają niezbyt przydatne w przypadku, gdy naprawdę chcesz użyć backgroundColor do stylizacji przycisków. UIButton ma fajną opcję ustawiania różnych obrazów dla różnych stanów kontrolnych, ale nie ma tej samej funkcji dla kolorów tła. Tak więc jednym z rozwiązań jest dodanie rozszerzenia, które będzie generowało obrazy z koloru i nanosi je na przycisk.
Tylko jeden problem z tym rozwiązaniem - ta zmiana nie zostanie zastosowana do przycisków utworzonych w scenorysie. Jeśli chodzi o mnie, nie stanowi to problemu, ponieważ wolę stylizować interfejs użytkownika z kodu. Jeśli chcesz używać scenorysów,
@IBInspectable
potrzebna jest dodatkowa magia .Druga opcja to tworzenie podklas, ale wolę tego unikać.
źródło
Może możesz utworzyć podklasę swojego przycisku i nadpisać zmienną isEnabled. Zaletą jest to, że możesz ponownie użyć w wielu miejscach.
źródło
.h:
źródło