No meu aplicativo para iPhone, tenho um UIButton que criei no Interface Builder. Posso habilitá-lo e desativá-lo com êxito no meu código ...
sendButton.enabled = YES;
ou
sendButton.enabled = NO;
No entanto, a aparência visual do botão é sempre a mesma! Não está desbotado ou cinza. Se eu tentar clicar nele, ele estará ativado ou desativado conforme o esperado. Estou esquecendo de algo? Não deveria parecer desbotado ou cinza?
ios
iphone
cocoa-touch
uibutton
Andy A
fonte
fonte
Respostas:
Você pode usar o seguinte código:
fonte
basta alterar a configuração do estado para desativar e escolher o que deseja, imagem de fundo para o estado desativado
fonte
Outra opção é alterar a cor do texto (para cinza claro, por exemplo) para o estado desativado.
No editor de storyboard, escolha
Disabled
noState Config
botão pop - up. Use oText Color
botão pop - up para alterar a cor do texto.No código, use a
-setTitleColor:forState:
mensagemfonte
Tente definir as diferentes imagens para
UIControlStateDisabled
(imagem cinza desativada) eUIControlStateNormal
(imagem normal) para que o botão gere o estado desativado para você.fonte
[ UIButton setAttributedTitle:forState:]
. Crie sua string atribuída em que a cor do primeiro plano do texto esteja definida como uma cor transparente.Para tornar o botão desbotado quando desativado, você pode definir alfa para ele. Existem duas opções para você:
Primeira maneira : se você deseja solicitar todos os botões do seu aplicativo, pode escrever
extension
para o UIButton assim:Segunda maneira : se você apenas deseja solicitar alguns botões em seu aplicativo, pode escrever uma classe personalizada no UIButton como abaixo e usar esta classe para a qual deseja aplicar:
fonte
Se você usar um botão de texto, poderá colocar em viewDidLoad o método da instância
exemplo:
fonte
Você pode usar o
adjustsImageWhenDisabled
que é propriedade deUIButton
(@property (nonatomic) BOOL adjustsImageWhenDisabled)
Ex:
fonte
Esta é uma pergunta bastante antiga, mas há uma maneira muito simples de conseguir isso.
myButton.userInteractionEnabled = false
Isso desativará apenas os gestos de toque sem alterar a aparência do botão
fonte
Em Swift :
ou
fonte
Definido
title color
para diferentes estados:Uso: (a cor do texto será alterada automaticamente)
fonte
Crie uma extensão no Swift> 3.0 em vez de cada botão sozinho
fonte
Você pode usar as duas primeiras respostas e será um resultado melhor.
No inspetor de atributos (ao selecionar o botão), altere a Configuração do estado para Desativado para definir a nova imagem que será exibida quando for desativada (remova o marcador na verificação Conteúdo-> Ativado para desativá-lo) .
E quando você altera o estado para ativado, a imagem carrega a desse estado.
Adicionar a lógica alfa a isso é um bom detalhe.
fonte
Swift 4+
Como usar
fonte
Estou preso no mesmo problema. Definir alfa não é o que eu quero.
UIButton
tem " imagem de fundo " e " cor de fundo ". Para imagem,UIButton
tem uma propriedade como@property (nonatomic) BOOL adjustsImageWhenDisabled
E a imagem de fundo é mais clara quando o botão está desativado. Para a cor de fundo, a configuração de alfa, solução de Ravin, funciona bem.
Primeiro, você deve verificar se desmarcou a caixa "desativado ajusta imagem" em Utilitários-Atributos.
Em seguida, verifique a cor de fundo desse botão.
(Espero que seja útil. Este é um post antigo; as coisas podem ter mudado no Xcode).
fonte
Parece que o código a seguir funciona bem. Mas, em alguns casos, isso não funciona.
Se o código acima não funcionar, envolva-o no Main Thread. tão
se você for rápido, assim
Além disso, se você personalizou o UIButton, adicione isso à classe Button.
Obrigado e aproveite a codificação !!!
fonte
Se o
UIButton
está no estado combinado deselected
edisabled
, seu estado éUIControlStateSelected | UIControlStateDisabled
.Portanto, seu estado precisa ser ajustado assim:
Uma abordagem é a subclasse da
UIButton
seguinte maneira:fonte
Esta pergunta tem muitas respostas, mas todas elas não parecem muito úteis, se você realmente quiser usar backgroundColor para estilizar seus botões. O UIButton tem uma boa opção para definir imagens diferentes para diferentes estados de controle, mas não há o mesmo recurso para cores de fundo. Portanto, uma das soluções é adicionar uma extensão que gere imagens em cores e as aplique no botão.
Apenas um problema com esta solução - essa alteração não será aplicada aos botões criados no storyboard. Quanto a mim, não é um problema, porque eu prefiro estilizar a interface do usuário a partir do código. Se você quiser usar storyboards, use um pouco de mágica adicional
@IBInspectable
.A segunda opção é a subclasse, mas eu prefiro evitar isso.
fonte
Talvez você possa subclassificar seu botão e substituir sua variável isEnabled. A vantagem é que você pode reutilizar em vários lugares.
fonte
.h:
fonte