1

のタイトルにカスタム アルファ値を適用したいと考えていますUINavigationBar。はのUINavigationBar一部でUINavigationControllerあり、UINavigationControllerは の一部ですUITabBarController

編集:これは、UIToolbar と UILabel を使用して作成したものの写真です。UINavigationController のタイトルを使用して同じことをしたい: http://i.stack.imgur.com/B8YX0.png

これを達成する唯一の方法は、 をサブクラス化し、UINavigationBar描画時にアルファを設定できるメソッドをオーバーライドすることだと思います。

ここに私の質問があります:

  1. これはこれを行う正しい方法ですか?
  2. これの HIG の影響は何ですか?
  3. Objective-C でのサブクラス化は初めてです。UI 要素のサブクラス化と変更の実装に必要な手順を理解するのに役立つガイドまたはチュートリアルを提供してもらえますか?
  4. UINavigationBarサブクラスを構成したら、のクラスをカスタム クラスに変更することで IB で表示できますよね?
  5. あなたのような専門家が私に教えてくれる、サブクラス化を思い付くことができる「落とし穴」はありますか?
4

2 に答える 2

3

これはやってはいけないことです。バーの全体的な不透明度ではなく、その色を変更したいのはなぜですか? 可読性が低下します。複数の問題があります。

  • パブリック API がないため、自明ではありません
  • サブビューの改ざんは壊れやすく、破損する可能性があり、副作用がある可能性があります
  • 実行されることは予見されていません-コントローラーをプッシュ/ポップするときに、ビューのアルファ値が使用され、アニメーション化されます

本当にやりたい場合は、クリーンでパブリックな方法が 1 つだけあります。それは、プッシュされる各ナビゲーション項目にカスタム タイトル ビューを与えることです。好きなだけそれを改ざんできます。UILabelそのため、 as サブビューを使用してビューを設定し、そのアルファを 0.5 に設定することができます。

于 2010-08-31T18:41:55.840 に答える
0

ナビゲーションバーがナビゲーションコントローラーによって管理されている場合、変更できるプロパティはごくわずかです(ドキュメントを参照)。それらの1つはtranslucent、アルファを調整するものですが、Appleが決定した値にのみ調整されます。

于 2010-08-31T16:04:43.040 に答える