2016-05-26 64 views
0

我有一個持有4個控制器(導航控制器)的UITabBarController。現在我想改變所有4個控制器視圖的幀,所以 這是什麼最佳實踐?因爲它會嘗試使它們適合它的容器視圖邊界,所以UITabBarController將總是重置其容器視圖的框架。調整tabbarcontroller中的所有視圖控制器框架

+0

那麼你爲什麼試圖調整它們? – Wain

+1

通常情況下,你不這樣做,但既然你想這樣做,所有tabBarController的控制器都有相同的大小? –

+0

@JigneshAgola是的,他們有相同的尺寸。我可以在tabbarcontroller.viewcontrollers中循環調整它們的大小,但是我無法設法停止tabbarcontroller強制將它們重新調整回其容器邊界。 –

回答

1

您可以通過創建自定義的tabbar控制器來實現。

請檢查以下屏幕截圖,瞭解如何創建自定義tabbar以滿足您的要求。

enter image description here

一旦你創建的TabBar這種方式,改變容器的幀大小它看起來就像是我在接下來的屏幕截圖顯示。您可以根據您的方便通過編碼來更改容器框的大小。

enter image description here

+0

這將工作,但我需要保留UITabBarController類。 看看我的解決方案,我發佈它作爲答案。 –

0

我解決了問題並保持天然的UITabBarController:

由於的UITabBarController將迫使視圖控制器的尺寸以它的邊界,我動態地改變所述UITabBar origin.y(tabBar.origin.y -= reduced size)和size.height tabBar.size.height += reduced size),以便視圖控制器的容器框架被迫縮小。

而比起來,爲了保留隨機標籤欄的設計,對於tabBar中的每個UITabBarItem,我推送了imageInset

這種方式不需要通過觀察者強制更改tabBarController中多個viewControllers視圖的框架以進行圖層更改或任何其他類似的方法。

+0

你是什麼意思你推** imageInset **?什麼是imageInset? –

+0

tabBarItem.imageInsets屬性。 –

相關問題