2014-11-04 86 views
0

viewDidLoad我設定的高度不同於標準的44點。例如,我希望它是35分。使用代碼:編輯高度的UIToolbar

CGRect frame = [[UIScreen mainScreen] bounds]; 
[self.navigationController.toolbar setFrame:CGRectMake(0, frame.size.height-35.f, frame.size.width, 35.f)]; 

和之前檢查框的尺寸後,我得到的打印輸出:

Before: {{0, 623}, {375, 44}} 
After: {{0, 632}, {375, 35}} 

但是在模擬器此檢查時,高度不斷44分。當我使用像350,高度大的值也是如此,我得到:

Before: {{0, 623}, {375, 44}} 
After: {{0, 317}, {375, 350}} 

我還以爲子類UIToolbar和創造我自己的,但UIToolbarUINavigationController是一個只讀屬性。我還可以嘗試什麼?

+0

你有沒有試過在'viewWillAppear:'中設置它的框架? – n00bProgrammer 2014-11-04 05:47:02

+0

是的。儘管'viewWillAppear:'實際上是在'viewDidLoad'之後調用的,所以即使它允許它工作,我也不認爲這是必要的。 – 2014-11-04 05:51:54

+1

在子類中重寫'layoutSubviews'似乎是我最好的選擇。我嘗試了許多可能的解決方案,但爲'UIToolBar'添加'@ implementation'塊並重寫'layoutSubviews'是我發現的唯一工作解決方案。 – n00bProgrammer 2014-11-04 06:08:37

回答

0

請嘗試以下步驟,

  1. 子類的UIToolbar
  2. 覆蓋的drawRect中
  3. 指定工具欄

希望這可以幫助你的新的行爲。

+0

雖然子類化會很好,但我無法將「UIToolbar」的子類指定給只讀屬性(「UINavigationController」就是這種情況)。如果你能想到解決這個問題的方法,那會很有幫助。我的目標是讓我的工具欄在視圖控制器之間保持不變,而不會改變內容/上下文。 – 2014-11-04 06:44:40