ViewControllerに次のコードがあり、すべてのアウトレットとアクションが正しく接続されています。 WHITE
とPURPLE
は、定数を定義したUIColorsです。また、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
を使って魔法をかける利点を得ることができないと聞きました。これについて正しい方法がわからない。前もって感謝します。
UIControlStateSelectedを使用するべきではありませんか?
さて、私は自分でこれを試してみましたが、うまくいきません.
ボタンのスタイルをカスタムに設定する必要があります。 UIButtonシステムスタイルは、変更できない多くのことを行います。強調表示されたボタンの状態は、デフォルトで独自の実装になります。これは、淡色の場合はより明るいバージョンです。
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitleColor:self.view.tintColor forState:UIControlStateNormal];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
これで白いテキストの背景が得られます。