0

ボタンがタップされたときにボタンの画像を変更する必要があります。ボタンの背景画像は ViewDidLoad メソッドで設定します。このスレッドに添付されている画像を参照してください。

  1. 初めてボタンをタップすると、ボタンのプロパティが選択済みに変更され、「arrow_right.png」画像がボタンに設定されます。

ここに画像の説明を入力

2.2回目のタップで、ボタンの状態が強調表示されているのに、背景画像が設定されていないことがわかりました。代わりに、ぼかし効果が見られます。

ここに画像の説明を入力

私の懸念は、UIButton の切り替え中に見た、画像が強調表示された状態に設定されていないことです。ボタンの状態が Selected から Normal に変わるとき。バグですか、それとも私のミスですか?

ありがとうございました。

- (void)viewDidLoad
{
  [super viewDidLoad];

  [testButton setBackgroundImage:[UIImage imageNamed:@"btn_normal.png"] forState:UIControlStateNormal];
  [testButton setBackgroundImage:[UIImage imageNamed:@"btn_pressed.png"] forState:UIControlStateSelected];
  [testButton setBackgroundImage:[UIImage imageNamed:@"btn_pressed.png"] forState:UIControlStateHighlighted];

}
- (IBAction)buttonPressed:(id)sender 
{
  UIButton *button = (UIButton*)sender;
  button.selected = !button.selected;

  if (button.selected)
  {
      [button setImage:[UIImage imageNamed:@"arrow_right.png"] forState:UIControlStateNormal];
      [button setImage:[UIImage imageNamed:@"arrow_right.png"] forState:UIControlStateHighlighted];
      [button setImage:[UIImage imageNamed:@"arrow_right.png"] forState:UIControlStateSelected];
  }
  else
  {
      [button setImage:[UIImage imageNamed:@"arrow_left.png"] forState:UIControlStateNormal];
      [button setImage:[UIImage imageNamed:@"arrow_left.png"] forState:UIControlStateHighlighted];
      [button setImage:[UIImage imageNamed:@"arrow_left.png"] forState:UIControlStateSelected];
  }
}
4

1 に答える 1

0

これを試して

- (IBAction)buttonPressed:(id)sender 
{
  UIButton *button = (UIButton*)sender;
 if(button.selected) {
 [button setSelected:NO]
} else {
 [button setSelected:YES]
}

}

なぜ画像を再設定する必要があるのか​​わかりませんでした。選択したプロパティを設定するだけで、ボタンは期待どおりに動作します。

于 2012-07-30T11:27:31.553 に答える