2014-11-05 25 views
0

我有這個viewController顯示頂部的導航欄(頂部的白色框)和底部的工具欄(圖片中的橙色框)。使視圖集中在其餘空間

因爲navigationBar是iOS添加到viewController的東西,所以當viewController可見時,self.view的最高值將被報告爲屏幕大小減去44點。

我已經添加了一個imageView到視圖,我希望它在導航欄和工具欄之間集中,如下圖所示。

enter image description here

我所做的是增加一個約束垂直集中的ImageView的。正如您在圖片中看到的那樣,Xcode顯示imageView完全垂直居中,但這並不是應用程序運行時發生的情況(謝謝Apple)。

實際上,這是發生了什麼:假設我在iPhone 5上運行它。iPhone的5屏幕高是568點。因爲有一個導航欄,self.view的高度將是524 pt(568 - 44)。約束愚蠢地將忽略導航欄的前44個像素,並將imageView集中在navigationBar的底部和工具欄的頂部之間。結果是imageView將更接近底部。

此圖像視圖被仔細選擇來完全填充工具欄和導航欄之間的空間,當應用程序運行在iPhone 4上時。此外,此imageView必須尊重寬高比約束。正是這樣:

enter image description here

集中使用垂直居中約束ImageView的而不是我試圖頂部約束添加到上海華和底部約束到工具欄。在所有的iPhone工作正常,但在iPhone 4上,在這兩個限制迫使ImageView的到另一個寬高比,就像這樣:

enter image description here

所以,我有什麼樣的約束應用到的ImageView使其位於導航欄和工具欄之間的空間的中心而不會丟失寬高比?

回答

1

如果希望視圖在導航欄和工具欄之間居中,則取消選擇控制器的「頂部酒吧」和「底部酒吧」。爲圖像視圖添加一個centerY約束,給它兩個長度的間距約束,最後是縱橫比約束。我對此進行了測試,並且它可以在各種尺寸下工作,其縱橫比爲1:1。如果你想要一個更高的長寬比(你的圖像看起來像〜1:1.2 w:h),那麼你需要做一些額外的工作,使它適合3.5英寸的屏幕,因爲沒有足夠的高度來獲得與圖像視圖是全寬(假設你也有狀態欄顯示 - 如果沒有,那麼這些約束應該適用於3.5「屏幕)。我可以編輯我的答案,包括如何做到這一點,如果你說什麼高寬比你想要的,如果你想要兩個酒吧之間的一些最小間距,或者你是否希望圖像視圖儘可能寬,同時仍然保持長寬比(這意味着兩條線沒有空間)。

+0

太棒了。我永遠不會找到這兩個選項(謝謝蘋果)。謝謝!!! – SpaceDog 2014-11-05 19:20:22