私が構築しているアプリには、きわめて正確にレイアウトされた画像の上にカスタムUIButtonが配置されています。 Buttonish、画像とラベル、そして何を持っているのですか?しかし、あなたの上にはっきりとしたカスタムスタイルのUIButtonがあり、タップを扱うことができます。カスタムUIButtonをハイライト表示
クライアントは昨日、「タップしたときに強調表示したい」と言っています。それはすぐに新しいuinavigationcontrollerのビューをプッシュすることを心配しないでください...それは点滅しなかったので、彼は混乱しています。オイ。
ここで私はそれに取り組んできました。私はそれが好きではありませんが、それは私がやったことです:
私はUIButton(FlashingUIButtonという名前)をサブクラス化しました。
何らかの理由で、コントロールモードでバックグラウンド画像を強調表示するだけでは、設定できませんでした。状態が「強調表示」されることはありませんでした。それがなぜであるかわからない。
だから代わりに私が書いた:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self setBackgroundImage:[UIImage imageNamed:@"grey_screen"] forState:UIControlStateNormal];
[self performSelector:@selector(resetImage) withObject:nil afterDelay:0.2];
[super touchesBegan:touches withEvent:event];
}
-(void)resetImage
{
[self setBackgroundImage:nil forState:UIControlStateNormal];
}
これを喜んでそれがタップいたときにボタンの上に私のgrey_screen.png(30%不透明なブラックボックス)を産むと、2回目以降の幸せな空要素を基底として0.2に置き換えます。
これは問題ありませんが、これはすべての多くのニブを通過し、すべてのボタンをUIButtonsからFlashingUIButtonsに変更する必要があることを意味します。これは世界の終わりではありませんが、私はUIButtonのカテゴリーとしてこの問題に取り組むことを本当に望んでおり、全ての鳥に一つの石を打ちました。
これよりも優れたアプローチの提案はありますか?
。それをしなければうまくいくかどうか分からない。別の方法としては、あなたはそれが、少なくとも常にUIViewのだろう知っているので、代わりにIDのUIViewのとしてそれを宣言するだろう。いずれにせよ、あなたはそれで遊ぶことができます。 – Omar