2015-06-14 84 views
2

我瀏覽過四處尋找答案,但我只找到有類似問題的人,而不是這個確切的問題,所以希望這裏有人能幫助我!當狀態欄隱藏旋轉時調整視圖

我有一個iPad應用程序。在iPad上,當您將iPad放在縱向或橫向時,始終顯示帶時鐘和電池的狀態欄。出於這個原因,我在一些視圖控制器的頂部有一些自定義工具欄,這些工具欄佔了那20點。

我現在正在努力使我的應用程序通用。我注意到的第一件事是,當iPhone在肖像模式下有幫助時,狀態欄會顯示,但當它處於橫向模式時,狀態欄會隱藏,現在我有一個20點的工具欄。

我對總是隱藏或始終顯示狀態欄不感興趣。我認爲在手機上將其隱藏在橫向模式下的功能很好。我想要做的就是能夠檢測狀態欄何時隱藏,以便我可以調整工具欄的Y位置(使其爲0或-20)。更好的解決方案是,如果我有辦法設置佈局約束來處理這種情況。

回答

14

正確的做法是:

  • 使用與正常身高正常的工具欄 - 不設置在高度上的任何約束。

  • 將超前視圖(不是超級視圖邊距)的前導限制0添加到超級視圖(不超級視圖邊距)後跟蹤限制0。

  • 將top constraint 0添加到頂部佈局指南。這似乎會在工具欄上方留下20個像素的空間,但是會笑出一個邪惡的笑聲並繼續。

  • 將視圖控制器設置爲工具欄的委託(爲此有一個委託出口)。

  • 有無視圖控制器採用UIBarPositioningDelegate和執行委託方法如下:

    class ViewController: UIViewController, UIBarPositioningDelegate { 
        func positionForBar(bar: UIBarPositioning) -> UIBarPosition { 
         return .TopAttached 
        } 
    } 
    

這將導致工具欄的表觀高度被擴展了狀態欄後面時,有一個狀態欄,但它會有正常的高度,並且在沒有狀態欄時會碰到頂部。

enter image description here enter image description here enter image description here

+0

謝謝!這是我第一次使用自動佈局,並且我已經將自己的最高限制設置爲超級視圖頂部,而不是像你說的那樣「頂部佈局指南」。通過將相關對齊,它就像你的屏幕截圖一樣工作。我不需要添加你添加的代碼,我可以保留我自己的工具欄。再次感謝! – Rob