2014-01-11 49 views
1

我已將自定義titleView添加到我的UINavigationItem,並且包含打算置於狀態欄下的視圖。它看起來很好,當我推動另一個視圖控制器,並在標準的從右到左的動畫中轉換時,它看起來很好。但是,當我[self.navigationController popViewControllerAnimated:YES]它剪輯此視圖的頂部,直到動畫完成。請參閱附加圖像以更好地解釋問題。UINavigationBar剪輯熱門內容

只有在彈出動畫完成後,它纔會再次顯得正常。我嘗試了所有我能想到的。在所有視圖viewControllernavigationBar上設置cropsToBoundsNO。我也試過layer.masksToBounds和幾乎所有聽起來很熟悉的房產。我添加了一個計時器,可以打印導航欄的框架矩形和自定義titleView,並且不會顯示它們改變任何內容。

有人知道我在做什麼錯嗎?

the problem

回答

2

兩種方式做到這一點:

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { // if iOS 7 
    self.edgesForExtendedLayout = UIRectEdgeNone; //layout adjustements 
} 

或者

您需要設置您的視圖控制器的三角洲。從工具區(第1項)切換到ios6.1或更高版本。然後選擇您的Vc視圖,並在實用區域的尺寸檢查器菜單中,框架下方會出現增量部分。每個三角洲之前都會有三角形。三角y到64(你應該在故事板的ios6.1或更高版本中)。

如果您需要幫助的三角洲,請訪問: Interface Builder: What are the UIView's Layout iOS 6/7 Deltas for?

+0

我已經試過edgesForExtendedLayout'設置''要和UIRectEdgeNone''UIRectEdgeAll'上我能想到的,沒有區別的所有viewControllers。由於iOS6/7幀更改,問題不在於典型的狀態欄重疊。這就是UINavigationBar在動畫製作時剪輯內容。我不會在動畫製作時剪輯或遮蓋內容。 – ErikPerik

+0

嘗試第二個選項,因爲它更好。曾經使用過Deltas? – Xeieshan

+0

Deltas不會解決這個問題,因爲它不是iOS6和7之間的區別。就像我說的,當它不處於過渡狀態時,它看起來很好。當彈出動畫完成時,橙色欄的剪輯部分再次出現。我不明白三角洲會如何解決這個問題。 – ErikPerik