2017-11-24 15 views

答えて

1

TL; DR

あなたは、単一のイメージを供給したい場合は、あなたの最善の策は自動的に無効と強調した状態で、画像を明るくするシステムのボタンです。

イメージをさらに細かく制御するには、カスタムボタンを使用して最大4つのイメージを指定する必要があります。


ボタンの外観に影響を与える多くのプロパティがあるので、それは非常に紛らわしいです:

  • buttonTypeは(2):ちょうどシステムまたはカスタムに固執してみましょう。より多くのものがあります。
  • isSelected(2)
  • isHighlighted(2)
  • ISENABLED(2)
  • adjustsImageWhenHighlighted(2)
  • adjustsImageWhenDisabled(2)
  • setImage(_、(4)
  • :)用

これらのプロパティの量が限られていても、ボタンには256(2^8)種類の異なる組み合わせがあります。すべてのオプションについて推論だけを表示するだけでは、難しい作業です。

また、この回答の範囲を超えているボタンの外観に影響を与えるいくつかの他の要因がある:

  • tintColor
  • backgroundImageの
  • setTitleColor(用UIColor ?,:UIControlState)
  • setTitleShadowColor(用UIColor ?,:UIControlState)
  • がreversesTitleShadowWhenHighlighted:ブール
  • setBackgroundImage(UIImage ?, for UIControlState)
  • showsTouchWhenHighlighted
  • setAttributedTitle(NSAttributedString?、のために:ここでは、我々は上記のみ概説性質に注意を払うと仮定UIControlState)

は、256個の可能性の64です:

enter image description here

私がイメージとしてこれらを使用:

enter image description here

名前に関するいくつかの注意:

  • 「システム」と「カスタム」はbuttonTypeを参照します。
  • 「1イメージ」は、通常の状態(赤色)に対して定義された1つのイメージのみを意味します。
  • 「4画像」は、通常(赤)、強調表示(橙色)、選択(緑色)、無効(紫色)の各状態について定義された画像があることを意味します。
  • IDはadjustsImageWhenHighlighted=trueadjustsImageWhenDisabled=true
  • IDがadjustsImageWhenHighlighted=falseadjustsImageWhenDisabled=false
  • SEHはisSelected=falseisEnabled=false isHighlighted=false
  • SEHを意味手段任意の他の組み合わせは、同じパターンに従うisSelected=trueisEnabled=trueisHighlighted=true
  • を意味します。例えば。 sEhは、isSelected=falseisEnabled=trueisHighlighted=falseを意味します。

いくつかの所見:すべての8例で

  • 、最初の2行は常に同じです。これは、isEnabled = falseのときに強調表示された状態が無視されることを意味します。意味あり。
  • Seの状態は常に通常のイメージにフォールバックします。 S状態の陰影は使用しません。
  • システムボタンは、タイトル、選択されたインジケータ、および画像(テンプレート画像の場合)の色合いを尊重します。 (画像ではありません)
  • カスタムボタンは、画像内のtintColorを尊重します(テンプレート画像の場合)。 (写真はありません)
  • adjustsImageWhenHighlighted=falseは非選択状態のシステムボタンでは無視されているようです!
  • ボタンをUIButton()に初期化すると、デフォルトのbuttonTypecustomになります。
  • ストーリーボードの選択、有効、強調表示の状態をカスタマイズすることはできますが、ストーリーボードのプレビューは正確ではありません。アプリケーションを実行して、実際の状態の描写を確認する必要があります。
  • UIButtonをサブクラス化する場合は、forced to use the custom typeです。
  • テスト中に、ボタン画像のサイズが小さい(28x28など)場合、画像をタップしても強調表示されていないことがわかりました。代わりに、タップして保持する必要がありますし、イメージのフレームの外にドラッグすると、ボタンの上に指をもう一度動かすことができます。
関連する問題