Jawaban:
Tombol Anda harus buttonType
diatur ke Kustom.
Di IB Anda dapat menghapus centang "Sorot menyesuaikan gambar".
Secara terprogram Anda dapat menggunakan theButton.adjustsImageWhenHighlighted = NO;
Opsi serupa juga tersedia untuk keadaan "dinonaktifkan".
Selain jawaban di atas untuk tidak menandai "sorot menyesuaikan gambar" di IB, pastikan bahwa jenis tombol diatur KUSTOM.
Ini akan bekerja untuk Anda:
[button setBackgroundImage:[UIImage imageNamed:@"button_image"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];
Baris ke-3 adalah triknya di sini ...
Ini berfungsi sama untuk mengatur gambar / backgroundImage
adjustsImageWhenHighlighted
milik UIButton
tampaknya hanya mempengaruhi gambar latar belakang.
Bergantung pada perubahan apa dari default ke keadaan tombol yang disorot, Anda dapat memanggil beberapa metode untuk mengaturnya ke apa yang Anda butuhkan. Jadi jika perubahan gambar bisa Anda lakukan
[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Jika teks berubah Anda bisa melakukannya
[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
fungsi serupa lainnya:
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
OK, ini solusi mudah jika ini cocok untuk Anda, setelah seminggu membenturkan kepalaku, akhirnya terpikir oleh saya untuk hanya menetapkan highlight = NO untuk baris pertama metode IBAction untuk TouchUpInside atau TouchDown, atau apa pun yang berfungsi. Bagi saya itu baik-baik saja di TouchUpInside.
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
Untuk Pengembang Swifty -
yourButton.adjustsImageWhenHighlighted = false