[ios] 비활성화 된 UIButton이 희미하거나 회색이 아닙니다

내 iPhone 앱에는 Interface Builder에서 만든 UIButton이 있습니다. 내 코드에서 이와 같이 성공적으로 활성화 및 비활성화 할 수 있습니다 …

sendButton.enabled = YES;

또는

sendButton.enabled = NO;

그러나 버튼의 시각적 모양은 항상 동일합니다! 희미하거나 회색이 아닙니다. 그래도 클릭하면 예상대로 활성화 또는 비활성화됩니다. 뭔가 빠졌습니까? 희미 해 지거나 회색으로 보입니까?



답변

다음 코드를 사용할 수 있습니다.

sendButton.enabled = YES;
sendButton.alpha = 1.0;

or

sendButton.enabled = NO;
sendButton.alpha = 0.5;


답변

상태 설정을 변경하여 비활성화하고 원하는 것을 선택하십시오. 비활성화 된 상태의 배경 이미지

여기에 이미지 설명을 입력하십시오


답변

또 다른 옵션은 비활성화 된 상태의 텍스트 색상 (예 : 밝은 회색)을 변경하는 것입니다.

스토리 보드 편집기 DisabledState Config팝업 버튼 에서 선택하십시오 . 사용 Text Color텍스트 색상을 변경하려면 팝업 버튼을 누릅니다.

코드에서 -setTitleColor:forState:메시지를 사용하십시오 .


답변

버튼이 비활성화 된 상태를 생성하도록 ( UIControlStateDisabled회색 비활성화 된 이미지) 및 UIControlStateNormal(일반 이미지)에 대해 서로 다른 이미지를 설정하십시오 .


답변

비활성화했을 때 버튼이 희미 해 지도록 알파를 설정할 수 있습니다. 두 가지 옵션이 있습니다.

첫 번째 방법 : 앱의 모든 버튼을 적용하려면 extension다음과 같이 UIButton을 작성할 수 있습니다 .

extension UIButton {

    open override var isEnabled: Bool{
        didSet {
            alpha = isEnabled ? 1.0 : 0.5
        }
    }

}

두 번째 방법 : 앱의 일부 버튼을 적용하려면 아래처럼 UIButton에서 사용자 정의 클래스를 작성하고 적용하려는이 클래스를 사용할 수 있습니다.

class MyButton: UIButton {
    override var isEnabled: Bool {
        didSet {
            alpha = isEnabled ? 1.0 : 0.5
        }
    }
}


답변

텍스트 버튼을 사용하면 viewDidLoad 인스턴스 메소드에 넣을 수 있습니다

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state

예:

[self.syncImagesButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];


답변

adjustsImageWhenDisabled속성을 사용할 수 있습니다UIButton
(@property (nonatomic) BOOL adjustsImageWhenDisabled)

전의:

 Button.adjustsImageWhenDisabled = false