39

UIButton私は雲、透明な白黒の .png ファイルで、ダウン状態がなく、画像が 1 つだけのカスタムを持っています。指でタップしたままにすると、濃い灰色になります。そのダークグレーをもう少し圧迫感の少ないものに変えようとしています。ボタンは、タブ バー、ツールバー、またはナビゲーション コントローラーではなく、ビューで開いています。

私はすでに設定を試みましたtintColor(ドキュメントでは、「一部の」タイプのボタンにのみ適していると有益に通知されていますが、どのタイプかについては示されていません)。

また、ハイライトの色、デフォルトの状態などに関連して、Interface Builder で見つけることができるすべてを変更しようとしましたが、まったく違いはありませんでした。

ボタン自体の画像をその状態に設定しようとさえしましたUIControlStateHighlightedが、それでも指をボタンの上に置くと濃い灰色のオーバーレイが表示されます.

どうすればその色を変えることができますか? ここSOで他の多くの問題を調べましたが、自分に合った解決策を見つけることができませんでした。どんな助けでも大歓迎です!

編集:提供された に色合いを適用するためにUIImage使用するメソッドを追加するカテゴリを使用して問題を解決しました。次に、その画像をハイライトとして設定しました。すべて問題ありません。Apple が私たちに変更を許可するべきだった色を変更するには、多くの面倒な作業があるように見えますが、c'est la vie です。CoreGraphicsUIImage

4

5 に答える 5

76

州のカスタム画像を設定したと言いましたUIControlStateHighlighted。これにより、デフォルトの動作無効になります。

それでも問題が解決しない場合は、adjustsImageWhenHighlightedプロパティを に設定してこの効果を無効にしNO、必要なカスタム効果を使用できます。

于 2013-04-12T08:00:53.397 に答える
1

ボタンが押されるたびに灰色で強調表示されていたとき、カスタム UIButton で同様の問題が発生していました。UIButton をサブクラス化することでこの問題を解決し、実装では単一のメソッド (void)setHighlighted: メソッドをオーバーライドして空のままにしました。

- (void)setHighlighted:(BOOL)highlighted
{
   // Leave empty to prevent super from doing whatever
   // that it is doing to show the grey highlight.
}

メソッドで何もしていなかったので、それはあらゆるタイプの強調表示を止めました。強調表示効果を削除するだけの場合は、より良いアプローチです。

したがって、コードで UIButton のサブクラスを作成し、setHighlighted メソッドをオーバーライドしてから、カスタム ボタンをこのカスタム クラスのサブクラスにします。

于 2013-07-19T03:00:27.800 に答える