0

UIButton のチェックボックス サブクラスを実装しています。2 つの背景画像 (オン/オフ) と 4 つの概念的な状態があります。

  • on- 画像上/強調表示されていない
  • off- 画像オフ / ハイライトされていない
  • on & pressed- 画像上/強調表示
  • off & pressed- 画像オフ / ハイライト

オンとオフのみの背景画像を設定すると (UIControlStateNormalUIControlStateSelected)、押したときにボタンが強調表示されます。

ただし、 の場合on & pressedは、オフの画像を使用します (さすがに、状態がUIControlStateSelected | UIControlStateHighlightedであるため、通常の状態の画像を使用します)。

そのため、背景画像をUIControlStateSelected | UIControlStateHighlightedオン画像に設定しましたが、プログラムによるハイライトが無効になりました-その状態に特定の背景画像を設定すると、ロジックはおそらくハイライトをオーバーライドしたいと思うからです。

3 番目の画像を使用したくないのですが、背景画像を設定しUIControlStateSelected | UIControlStateHighlightedて、プログラムによるハイライトを適用することは可能ですか?

[self setAdjustsImageWhenHighlighted:YES];背景画像を設定した後、すでに呼び出しています。

4

1 に答える 1

0

UIButtonタイプが「カスタム」ではなく、「Rounded Rect」などを使用していると思います。この場合、背景画像を設定すると、予期しない副作用が発生する可能性があります。以前の質問を参照してください。
ボタンの種類を「カスタム」に変更することをお勧めします。もちろん、すべての属性を独自に定義する必要があります。

于 2013-04-18T15:36:40.230 に答える