viewController に次のコードがあり、すべてのアウトレットとアクションが正しく接続されています。 と はWHITE
定数を定義した UIColors です。 また、をと にPURPLE
設定し、それがボタンに伝播するようにしました。UIWindow
tintColor
PURPLE
- (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];
すると、白いテキストの背景が表示されます。