2011-06-21 31 views
8

有沒有辦法讓iPhone應用程序的「內容」區域知道更大的導航欄?iOS:是否可以製作UINavigationBar高,並將其他視圖向下「推」屏幕?

類似這些問題:

我已經成功地使用第一題示例代碼中添加上UINavigationBar的一個類別,改變它的高度,在我需要的地方添加了一個子視圖,但是我看不到一種方法來引起UITableView(或者任何內容視圖)考慮其高度:

iPhone 4 Simulator Screenshot
(顏色是唯一作出區分的不同意見)

+1

對於「(顏色只是爲了使不同的意見可區分)+1」,否則我會投票結束:) < - 笑話 – 2011-06-21 21:14:27

回答

8

接受的答案第一個問題設置的導航欄在-layoutSubviews框架,這是任何地方從「ewwwww」取決於完全錯誤其他佈局代碼所做的假設。

取而代之,覆蓋-sizeThatFits:返回一個更合適的大小。

+0

我們有一個贏家!我從sizeThatFits返回所需的大小,並且正確調整大小。謝謝! – Drarok

-2

我會去了解這個通過調整tableView.frame,所以是這樣的:

CGRect navFrame = self.navigationController.navigationBar.frame; 

CGRect tableFrame = self.tableView.frame; 

tableFrame.size.height = tableFrame.size.height - navFrame.size.height; 
tableFrame.origin.y = navFrame.size.height; //move it down by the height covered by the navigation Bar 

self.tableView.frame = tableFrame; 

你可以與你的其他觀點也這麼做 - 通過簡單的調整框架,即。

我在這臺電腦上沒有XCode,所以我沒有檢查代碼 - 只是將它作爲例子寫出來,所以請在使用它之前自行檢查!

+0

只要有一些不同的觀點,這真的不是一個可行的方法。我必須在每個ViewController上實現這個功能! – Drarok

+0

-1。導航控制器的視圖將定期進行佈局(例如,輪換更改);這樣的佈局黑客往往會出現工作,直到你做一些意想不到的事情,如旋轉設備或推/彈出另一個VC。我有一次需要這樣做,但通常有更可靠的方法來實現這一點。 –

相關問題