2016-05-26 9 views
0

私は4つのコントローラ(ナビゲーションコントローラ)を持つUITabBarControllerを持っています。今私はすべての4つのコントローラのビューのフレームを変更したいので、 これのためのベストプラクティスは何ですか?tabbarcontrollerのすべてのviewcontrollerフレームのサイズを変更する

: UITabBarControllerは、コンテナビューの境界に合わせようとするため、コンテナビューのフレームを常にリセットします。

+0

なぜサイズを変更しようとしていますか? – Wain

+1

通常、あなたはそれをしませんが、それをやりたいので、tabBarControllerのすべてのコントローラは同じサイズですか? –

+0

@JigneshAgolaはい、彼らは同じサイズを持っています。私はtabbarcontroller.viewcontrollersでループ中にそれらのサイズを変更することができますが、私はそのコンテナ境界に戻すようにサイズを変更するtabbarcontrollerを停止することはできません。 –

答えて

1

カスタムタブバーコントローラを作成することでこれを実行できます。

要件を満たすカスタムタブバーを作成する方法については、下記のスクリーンショットを確認してください。あなたがこの方法をタブバーを作成し、それは私が次のスクリーンショットに示されているように見えるだろう、コンテナのフレームサイズを変更すると

enter image description here

。コンテナのフレームサイズは、便利なようにコーディングによって変更できます。

enter image description here

+0

これはうまくいきましたが、私はUITabBarControllerクラスを保持する必要がありました。 私の解決策を見て、答えとして投稿しました。 –

0

私は私の問題を解決し、ネイティブUITabBarControllerを維持:

UITabBarControllerはその境界にビューコントローラのサイズを強制されますので、私は動的にUITabBar origin.y(tabBar.origin.y -= reduced size)に変更およびサイズ。高さtabBar.size.height += reduced size)、ビューコントローラ用のコンテナフレームが強制的に小さくなるようにします。

そして、カジュアルなタブバーデザインを維持するために、tabBar内の各UITabBarItemについて、imageInsetをプッシュしました。

このように、レイヤーの変更や他の同様のメソッドのオブザーバーを介して、tabBarControllerの複数のviewControllerビューのフレームを強制的に変更する必要はありません。

+0

** imageInset **をプッシュしたということを意味しますか? imageInsetとは何ですか? –

+0

tabBarItem.imageInsetsプロパティ。 –

関連する問題