画像付きのカスタムボタンを使用しました。通常 では、 ボタンをタップすると、ボタンの色が変わります。
そのカスタムボタンをタップすると、カスタムボタンから画像を変更したい。
どうすれば変更できますか?
ありがとう。
これが標準の UIButton であると仮定すると、ボタンを初期化するときに次のことができます。
[btnObj setImage:[UIImage imageNamed:@"imgName.png"] forState:UIControlStateHighlighted];
または背景画像の場合:
[btnObj setBackgroundImage:[UIImage imageNamed:@"imgName.png"] forState:UIControlStateHighlighted];
最初に、ビュー コントローラーのメンバー変数としてボタンを作成します。と呼びましょうUIButton* myButton
。
次に、そのようにボタンを初期化し、その画像を最初に表示したい画像に設定します。
myButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[myButton setImage:[UIImage imageNamed:@"OriginalImage"] forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(onClickMyButton) forControlEvents:UIControlEventTouchUpInside];
3 行目では、ボタンがクリックされたときに "onClickMyButton" 関数が呼び出されるようにしています。次に、画像を「NewImage」に変更する次の関数を記述します。
-(void) onClickMyButton
{
[myButton setImage:[UIImage imageNamed:@"NewImage"] forState:UIControlStateNormal];
}
そして出来上がり!問題が解決しました :)
以下の 2 つのメソッドを使用できます – setBackgroundImage:forState: – setImage:forState: UIButtonを確認します
まず、ストーリーボードで「btYesAction」と「btNoAction」を使用してボタンのオブジェクトを作成します。
viewcontroller.m に移動し、以下のコードを貼り付けます
<pre>
(IBAction)btYesAction:(id)sender {
UIButton *button = (UIButton *)sender;
button.selected = !button.selected;
[button setImage:[UIImage imageNamed:@"NO1.png"]
forState:UIControlStateSelected];
私はこのようにしました:
どこか、私の場合 ViewDidLoad 。. .
if(![[NSUserDefaults standardUserDefaults]boolForKey:@"volume_control"]){
[btnVolume setImage:[UIImage imageWithIcon:@"fa-volume-up" backgroundColor:[UIColor clearColor] iconColor:clrPureBlueTint andSize:CGSizeMake(32, 32)] forState:UIControlStateNormal];
}else{
[btnVolume setImage:[UIImage imageWithIcon:@"fa-volume-off" backgroundColor:[UIColor clearColor] iconColor:[UIColor whiteColor] andSize:CGSizeMake(32, 32)] forState:UIControlStateNormal];
}
次にクリックイベントで
- (void)btnVolumeClicked : (UIButton *)sender{
if ([[NSUserDefaults standardUserDefaults]boolForKey:@"volume_control"]) {
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"volume_control"];
[[NSUserDefaults standardUserDefaults] synchronize];
}else{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"volume_control"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
[self selectedState];}
SelectedState メソッドで:
-(void) selectedState{
if(![[NSUserDefaults standardUserDefaults]boolForKey:@"volume_control"]){
[btnVolume setImage:[UIImage imageWithIcon:@"fa-volume-up" backgroundColor:[UIColor clearColor] iconColor:clrPureBlueTint andSize:CGSizeMake(32, 32)] forState:UIControlStateNormal];
}else{
[btnVolume setImage:[UIImage imageWithIcon:@"fa-volume-off" backgroundColor:[UIColor clearColor] iconColor:[UIColor whiteColor] andSize:CGSizeMake(32, 32)] forState:UIControlStateNormal];
}}
私は Font Awesome を使用していますが、このようにボタン画像を設定するだけです
[btnVolume setImage:[UIImage imageNamed:@"NO1.png"]
forState:UIControlStateSelected];