2013-02-07 24 views
2

我有一個非常簡單的設置:A UINavigationControllersetToolbarHidden NO。因此,UINavigationController所擁有的內容中的自定義視圖容器應該是從導航欄底部到工具欄頂部的距離。 expected distanceiOS自定義查看大小內部UINavigationController當顯示工具欄

但是,我得到的是(您可能能夠通過查看半透明工具欄從屏幕快照中收集)從導航欄底部到屏幕底部的距離。

我已將autoresizingMask設置爲UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth在我的viewDidAppear中,但它永遠不會得到考慮工具欄高度的「正確」答案。我可以計算工具欄高度,並從視圖高度中減去它,重新設置自定義視圖的高度,但真正的問題在設備旋轉時重新出現。這看起來像是一個autoresize類型的問題,我很困惑爲什麼不考慮工具欄。

任何提示如何讓自定義視圖調整大小,佔用工具欄佔用的空間?

有兩點要注意:

  1. 我創造這一切的編程方式,不使用IB

  2. 我在共生體檢查它,這是非常可靠的(至少對我來說)它驗證我所看到的,並通過NSLog輸出

我看到的應用程序做這一切的時候測量,所以我覺得我必須失去了一些東西。

代碼:

// Code translated from RubyMotion 

view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
self.tableView = [[UITableView alloc] initWithFrame:view.bounds style:UITableViewStylePlain]; 
self.tableView.accessibilityLabel = @"events table"; 
self.tableView.backgroundColor = [UIColor whiteColor]; 
[self.tableView setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth]; 

self.tableView.dataSource = self; 
self.tableView.delegate = self; 
self.tableView.tableHeaderView = searchBar; // assume I created a searchbar 

[self.view addSubview:self.tableView]; 

在此先感謝。

+0

你可以發佈用於創建此視圖的代碼嗎?也許這裏有一個bug ... –

+0

你能記錄你的視圖的框架和tableview的框架嗎?只是爲了知道它們究竟是什麼 –

+0

這裏(奇怪的是,它們的尺寸完全相同,這就是設備尺寸。這些日誌來自viewDidAppear: 2013-02-07 12:23:02.021視圖框架是# CGRect origin =# size =#> 2013-02-07 12:23:02.022表格框架是# size =#> –

回答

0

當您使工具欄變成半透明狀態時,內容視圖會自動調整大小以將空間一直佔用到欄底部,這對應於您希望通過它看到某些內容的事實。當您將工具欄設置爲不透明時,內容視圖的大小將適合圖形中箭頭所示的空間。

因此,在你viewDidLoad的地方,您可以設置:

self.navigationController.toolbar.translucent = NO; 

雖然說真的,這應該是默認值,所以你必須在某個地方在這個視圖控制器設置爲YES,如果不是那麼也許在家長?