3

toolbarUINavigationControllerのプロパティのドキュメントには次のように書かれています。

このプロパティには、ナビゲーションコントローラーによって管理される組み込みツールバーへの参照が含まれています。このツールバーへのアクセスは、ツールバーからアクションシートを提示したいクライアントにのみ提供されます。UIToolbarオブジェクトを直接変更しないでください。

UINavigationControllerはそれを行うためのインターフェイスを提供するため、ツールバーの表示やアイテムを変更すべきではない理由を理解できます。ただし、タップするとツールバーが画面外でアニメーション化されるボタンを追加しました。なぜ私はこれをすべきではないのですか?

代わりに、UINavigationControllerがツールバーで行うすべてのことを複製する独自のToolbarNavigationControllerクラスを作成する必要があります。ツールバーでやりたいことができますか?UINavigationControllerがすでに私が望むことをしているとき、努力の無駄のように思えます。いったいなぜドキュメントは私がそれで何をするかをそれほど厳しく制限することを示唆するのでしょうか?

4

2 に答える 2

2

ナビゲーションバーを動かしたことで混乱する可能性がある3つの方法:

  1. アプリを回転できる場合、回転後も適切な場所にとどまりますか?画面に戻ったら、適切な場所からアニメートしますか?
  2. 検索バーを表示すると、ナビゲーションバーが自動的にオフになります。すでに手動で移動している場合、それがどこにあるかを知っていますか?
  3. hiddensBottomBarWhenPushedをに設定してviewControllerを押して戻ると、ツールバーは元の場所に戻りますか?YESnavigationController

一方、UINavigationController setNavigationBarHidden:NOアニメーション:YESを呼び出すのはどうですか?ナビゲーションコントローラーにツールバーの制御を維持させながら、それはあなたが望むことをしますか?

編集:誤読について申し訳ありません。navigationControllerはい、ツールバーを動かすことを意味すること(上記の項目3など)も行わない限り、おそらくあなたはあなたが求めていることを行うことができます。

一方、必要な動作は次のように実現することもできます。

  1. viewController複数のツールバーを使用する場合は、をに設定しhidesBottomBarWhenPushedますYES
  2. その上に必要なすべてのツールバーを配置viewControllerし、それらの位置と可視性を完全に制御できるようにします。

デフォルトのツールバーのレイアウトがnavigationController自体のツールバーと同じである場合、同じツールバー項目のセットがスライドしてから再びオンになるという奇妙な視覚効果が作成されますが、それ以外はすべて機能するはずです。

于 2012-04-11T05:35:07.757 に答える
0

アクセス可能にする必要がないため、UIToolbar にはアクセスできませ。+appearance にちゃんと反応します。あなたの場合、読み取り専用変数のプロパティにアクセスできます (CGRect を見てください!)。UIToolbar または UINavigatiomBar を画面外でアニメーション化する必要がある場合は、frame.center プロパティを UIView アニメーション ブロックの CGPointMake と同じに設定します。

于 2012-04-11T04:59:26.900 に答える