2013-10-25 18 views
0

我正在使用Three20(ack!)編寫的舊代碼庫。現在我們需要能夠將這個應用程序部署到iOS7和iOS6。iOS7 NavigationBar從每個賽段的44到64點可視化增長

大多數情況下,它工作正常,但是當用戶點擊並導致視圖控制器之間的切換時,導航欄在過渡動畫期間用44點導航欄繪製,但動畫完成後,它將對齊到64點高。

所以,切換視圖... ...平穩黃油... 滿貫。清洗,沖洗,重複。

在任何iOS 7 iPhone大小的設備上從一個視圖切換到另一個視圖時,會產生這樣的抖動效果。有趣的是,它只發生在從一個視圖切換到另一個視圖時,而不是切換到當前ViewController的新實例。

我會顯示代碼,但我不確定要顯示的代碼。

我會很感激所有的指針(RTFM評論欣然接受),我的谷歌福失敗了我這一次。

查看層次結構看起來是這樣的: UIScreen TTNavigatorWindow UILayoutContainerView UINavigationTransitionView UIViewControllerWrapperView 的UIView TTTableView UITableViewWrapperView ...等等...

這是一個three20問題,即three20假設導航欄總是有44個高度,但現在它們不是?

這是一個Interface Builder的問題,即導航欄只能在44點創建,並且我應該處理這口井在我的代碼?

這是一門深奧的iOS 7問題,即它的決定,因爲導航是在頂層,它需要改變定期的高度?

這是一個文檔問題,即觀察我的(顯然微薄的)權力只是沒有看到相關的位在蘋果文檔?

感謝,所有的

-Ken

回答

1

首先,我想推薦給擺脫Three20的。我知道這對你的情況並不是很有幫助,但真的。

但後來我想向你提供兩個思路上就可能會發生:

  • Three20確實使用在不同的地方硬編碼的導航欄的大小,但我不認爲這會導致你的問題在這裏描述。我可能會很確定它會在其他地方導致iOS7問題。

  • 從你描述它聽起來像iOS7計算導航欄的高度可能是問題的方式。因爲它會以某種方式推斷出three20如何管理視圖,因此它對於普通的UIKit來說工作正常。如果將整個視圖堆棧向下移動1 px,屏幕底部會發生什麼?我想,導航欄不會改變它的大小。要了解,請看how iOS7 calculates the navigation bar height。我想你想要的是整個動畫中的64像素導航條。我必須弄清楚如何修改動畫之前呈現的視圖控制器的框架以實現該效果。

我希望這些想法可以有所幫助。

+0

嗨通克隆,謝謝你的回覆。是的,three20 *有*去。 (我們已經向力量解釋說,這是浪費精力......對於這個版本我們不能把舊工作扔掉,而必須與我們所得到的結合起來)。 –

+0

我對iOS7窗口化更改印象不深。他們顯然給了那些需要能夠同時瞄準6和7的開發人員。他們想要強加一種我們被迫維持兩種結構的情況。相當令人不快的蘋果,但越來越真實的形式。感謝鏈接到導航欄高度計算! –