3

UIButton を Disabled に見せるために次のコードを試しています。

btnYourButton.alpha = 0.6f;
btnYourButton.enabled = NO;

作成が有効になっている間(もちろん、有効に見えるように)

btnYourButton.alpha = 1.0f;
btnYourButton.enabled = YES;

単一のステートメントでこれ (UIButton を無効/有効にし、無効/有効に見せる) の両方を実行できる方法はありませんか?

4

3 に答える 3

4

または、次のような UIButton のサブクラス化を試すこともできます。

ファイル MyKindOfButton.h

#import <UIKit/UIKit.h>

@interface MyKindOfButton : UIButton

@end

ファイル MyKindOfButton.m

#import "MyKindOfButton.h"

@implementation MyKindOfButton

- (void)setEnabled:(BOOL)enabled {

    [super setEnabled: enabled];

    if (enabled) {
        self.alpha = 1.0f;
    } else {
        self.alpha = 0.6f;

    }
}

@end
于 2012-02-08T19:08:55.980 に答える
1

これは非常に古い質問であることは知っていますが、ここに非常に優れた解決策があります。UIColor のカテゴリを作成し、このメソッドを追加するだけです。

+ (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size
{
    UIGraphicsBeginImageContext(size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, color.CGColor);
    CGContextFillRect(context, (CGRect){.size = size});

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}

+ (UIImage *)imageWithColor:(UIColor *)color
{
    return [UIImage imageWithColor:color size:CGSizeMake(1, 1)];
}

これで、backgroundImage を任意の色に設定するだけで、無効な外観が自動的に処理されます。

[button setTitleColor:[UIColor someColor] forState:UIControlStateNormal];
于 2014-03-29T05:02:02.953 に答える
0

もう 1 つのオプションは、無効状態のテキストの色を (たとえば薄い灰色に) 変更することです。ストーリーボード エディタで、State Config ポップアップ ボタンから Disabled を選択し、Text Color ポップアップ ボタンを使用してテキストの色を変更します。コードでは、-setTitleColor:forState: メッセージを使用します。

(これは古い投稿であることは認識していますが、他の人がこのオプションを好むかもしれないと思いました)

于 2013-01-27T02:48:20.400 に答える