ハイライトされたときのUIButtonのタイトルの色を設定する iOS 7 質問する

ハイライトされたときのUIButtonのタイトルの色を設定する iOS 7 質問する

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

- (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。正しい方法がわかりません。よろしくお願いします。

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

ベストアンサー1

UIControlStateSelected を使用するべきではないでしょうか?

はい、自分で試してみたのですが、うまく動作しません。

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

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

すると、白いテキストの背景が表示されます。

おすすめ記事