44

ボタンを作成しました。タイトルの色はデフォルトで黒です。しかし、それを押すと、色が少し青に変わり、二度と元に戻らないのですが、これはどのように起こりますか?誰か教えてもらえますか?そして、ボタンのタイトルは常に黒のままにしておきたいです。どうやってやるの?私が試してみました

[button setTitleColor:[UIColor darkTextColor] forState:UIControlStateHighlighted];
[button setTitleColor:[UIColor darkTextColor] forState:UIControlStateSelected];

しかし、効果はありません。これをコードに追加すると、ボタンのタイトルが常に青色になっているようです。

次のようにコーディングします。

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setFrame:CGRectMake(20, 360, 280, 44)];
[button setTitle:NSLocalizedString(@"Continue", @"Label: TextLabel in Continue button") forState:UIControlStateNormal];
button.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:20.0f];
button.titleLabel.textColor = [UIColor darkTextColor];
button.titleLabel.shadowColor = [UIColor blackColor];
button.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin|UIViewAutoresizingFlexibleWidth;

[self.view addSubview:button];
[button release];

みんな、ありがとう。私はその問題を大いに楽しんだ。根本的な原因は

button.titleLabel.textColor = [UIColor darkTextColor];

これを外して使うと

button setTitleColor:(UIColor) forState:(UIControlState);

問題は解決しました!

4

8 に答える 8

54

あなたが使用することができます

[UIButton setTitleColor:forState:]

すべての州の場合、タイトルの色はすべての州で同じままです。

[button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
[button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor redColor] forState:UIControlStateSelected];

注: 上記のコードを 3 回入力または貼り付けることを避けるには、Will が提案する次のコードを使用できます。

[button setTitleColor:[UIColor redColor] forState:(UIControlStateHighlighted | UIControlStateNormal | UIControlStateSelected)];
于 2012-10-23T13:27:17.017 に答える
30

@null が指摘しているように、これを行う最も簡単な方法は、Interface Builder (またはコード) でボタンの種類を「カスタム」に設定することです。

この動作を標準のボタンで再現する必要がある場合は、setHighlightedメソッドをオーバーライドして、titleLabel のアルファ チャネルも調整されないようにします。

- (void)setHighlighted:(BOOL)highlighted
{
    [super setHighlighted:highlighted];
    self.titleLabel.alpha = 1.0;
}
于 2014-06-04T23:50:30.437 に答える
2

ボタンのタイプがカスタムでない場合、システムは setTitleColor(_:for:) を無視します。

于 2019-11-19T15:10:42.143 に答える
0

マユルは正しいと思います。「darkTextColor」の代わりに別の色を試しましたか?私の知る限り、「darkTextColor」は明るい背景にテキストを書くために使用されるシステム固有の色です。mayuursの提案が機能しない場合は、blackColorを試してみてください。

編集:[sender setHighlighted:NO];ボタンを押すと呼び出されるIBActionに:を追加してみてください。それはそれを解決しますか?私はこれを提案します。なぜなら、[button release];あなたはまだ古いバージョンのiOs SDKを実行していて、これ以外のエレガントな方法でボタンのハイライトを無効にするオプションがないからです。

Edit2:プログラムでボタンを作成していますが、IBActionに接続しているようには見えません。これをあなたの下に追加してください[[UIButton alloc] init];

[button addTarget:self action:@selector(myIBAction) forControlEvents:UIControlEventTouchUpInside];

次に、次のようなIBActionメソッドを作成します。

- (IBAction)myIBAction:(UIButton *)sender; /* In Header File */

- (IBAction)myIBAction:(UIButton *)sender{ /* In Implementation File */
        [sender setHighlighted:NO];
}
于 2012-10-23T13:06:04.780 に答える