31

ビューコントローラーに次のコードがあります。すべてのアウトレットとアクションが正しく接続されています。WHITEとは、PURPLE定数を定義した UIColors です。また、 を に設定し、それUIWindowがボタンまで伝播します。tintColorPURPLE

- (void)viewDidLoad {
    [super viewDidLoad];
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
    button.backgroundColor = WHITE;
    button.layer.borderWidth = 1.0;
    button.layer.masksToBounds = YES;
    button.layer.cornerRadius = 5.0;
    button.layer.borderColor = PURPLE.CGColor;
}

-(IBAction) buttonTouchDown:(id)sender {
    button.backgroundColor = PURPLE;
    button.layer.borderColor = WHITE.CGColor;
}

-(IBAction) buttonTouchUpOutside:(id)sender {
    button.backgroundColor = WHITE;
    button.layer.borderColor = PURPLE.CGColor;
}

-(IBAction) buttonTouchUpInside:(id)sender {
    button.backgroundColor = WHITE;
    button.layer.borderColor = PURPLE.CGColor;
}

ボタンをクリックしても、テキストが白くなりません。viewDidLoad

これは、もっとうまくトリミングできたはずのスクリーンショットです。ハイライト状態でご覧の通り白ではなく、白と紫が混ざったような感じです。を使用する必要がありますUIButtonTypeCustomか? そうなると、iOS 7 が魔法のようにtintColor. これについて何が正しい方法なのかわかりません。前もって感謝します。

通常の状態 強調表示された状態

4

2 に答える 2

60

UIControlStateSelected を使用するべきではありませんか?

さて、私はこれを自分で試してみましたが、うまくいきません。

ボタンのスタイルをカスタムに設定する必要があります。UIButton システム スタイルは、変更できない多くのことを行います。強調表示されたボタンの状態は、デフォルトで独自の実装になります。これは、tintcolor の場合はより軽いバージョンです。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitleColor:self.view.tintColor forState:UIControlStateNormal];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];

これにより、白いテキストの背景が得られます。

于 2013-11-02T09:40:56.203 に答える
-1

これがあなたの質問の答えであるか、ボタンが選択されたときにタイトルの色を設定するのが難しい人がいることを願っています.

[btnCustom setTitleColor:[UIColor whiteColor] forState: UIControlStateSelected];
[btnCustom setTitleColor:[UIColor redColor] forState: UIControlStateNormal];

make btnCustom.selected = NO よりもボタンのタイトル coloe red が必要な場合、make btnCustom.selected = YES よりも白いタイトル色のボタンが必要な場合

于 2016-02-11T13:12:29.037 に答える