お?いけるくさい?

iPhoneアプリエンジニアのたまごです。いっちょまえエンジニア目指してちいさな発見や学んだことを覚え書きしていきます!Objective-C/iOS/開発

UIButtonの画像変更(サウンドON/OFF)

UIButtonの画像のカスタマイズ。

=====やりたいこととしては以下=====

●サウンドボタンを押したら、斜線のついたOFFの画像にきりかわる

●OFFの画像のときサウンドボタンをもう一度押すと、斜線がとれたONの画像に戻る

=============================

 

ボタンのカスタマイズはいつもInterface Builderでやってたけん、

押したら画像が切り替わるってどうやるんやろう

って初の試みで、見当つけたのがこれ。

 

 

- (IBAction)soundBtn:(id)sender {

[_soundBtn setBackgroundImage:[UIImageimageNamed:@"top_btn_sound_off.png"

                         forState:UIControlStateHighlighted];

}

 

 

...ぴくりともしない...。

うーむ。

 

forState:UIControlStateHighlighted

ってのが「ボタンが押されているときの状態」らしいけ、

Highlighted=つまりは指が触れているときってこと?

だったら違うな。

触れてる一瞬じゃなくて、押したら以後ずっとOFFの状態をキープしててほしい。

ていうかその前に、触れてる一瞬すらも変わってない。(ちーん)

なーぜーだーー。

 

まぁとりあえずは(IBAction)になってる時点で、

「ボタンが押されたときの処理」ってことやけん、

forState:UIControlStateHighlighted を

forState:UIControlStateNormal になおすでしょう?

 

- (IBAction)soundBtn:(id)sender {

[_soundBtn setBackgroundImage:[UIImageimageNamed:@"top_btn_sound_off.png"

                         forState:UIControlStateNormal];

}

 

これでどうだ!

 

(.....しーん...)

 

あれ?

かわらない。

なーぜーだーー。

 

はい、トレーナーさん助けてください。

「ボタンどうやって今まで画像入れてたの?」

「IBです」

「で、いれてるとこ見せて」

「ここです」

「どこでいれてる?」

「ん?ここです」

「ここってどこ」

「Imageでs.....ほああああああああああ!!!!」

 

そうです。

私がいつもボタンのカスタム画像を入れてたのは、

BackgroundImageではなく、ただのImage。

なんという凡ミス、、、。

 

こちらが正解。

ちゃんとうつりました!!

- (IBAction)soundBtn:(id)sender {

[_soundBtn setImage:[UIImageimageNamed:@"top_btn_sound_off.png"

                         forState:UIControlStateNormal];

}

ちゃんちゃん。