2013-03-13 20 views
27

IB, stop adding that padding!如何防止Interface Builder在子視圖內容周圍添加20pt填充?

看到20px(pt's rather)的填充? IB在兩種情況下自動執行此操作,當您按Cmd + =自動調整超級視圖以適合子視圖內容時,以及選擇Editor > Embed In > UIView, UIScrollView etc.時。

後者特別討厭,因爲它需要一步一步的節省,並將其轉變爲一種重新定位的麻煩,只比手動完成時略微好一些,並且將所有子視圖的相對位置拖到層次結構中的不同位置。

Embed In選項

另外,通過IB(-20,-20),彷彿使得它更轉到新上海華包裝的定位...

我失去了一些東西在這裏?有沒有辦法來防止這種填充?

回答

35

我終於想通了如何做到這一點,與此相關的答案:

Group views in Interface Builder

  1. 選擇所有的你希望嵌入(按Shift或命令點擊它們)的意見。
  2. Editor-> Embed In-> View。這會用多餘的20像素填充創建一個視圖「A」。
  3. 用你想要的實際邊界創建一個新的視圖「B」(因此在所有邊上比「A」小20個像素)。
  4. 將舊容器視圖「A」拖到新的容器視圖「B」中(Xcode將在「B」中將它居中,保留所有子元素的當前位置)。
  5. 點擊舊的容器視圖「A」並轉到編輯器 - >解開。

現在您的子元素在視圖「B」中正確定位,並且沒有20像素填充。

在Xcode 4.5中測試。

P.S.當你希望有一個側邊欄並且同時支持3.5「和4」顯示時,這種技術特別有用。您可以給側邊欄和主視圖設置適當的自動調整大小,然後調整與其相關的子視圖。我遇到了麻煩GLKit意見,尊重自動調整大小的規則,所以我成立了普通的觀點和嵌入GLKKit視圖中他們所有的紅色自動調整大小酒吧的啓用:

GLKView nested subview frame size and bounds size incorrect

+6

不錯的技術。謝謝。但基本上正確的答案是「你不能」? – 2013-06-01 14:31:15

+1

在Xcode 5.1中工作。這應該是正確的答案,因爲它提供了問題的解決方案,儘管它不像預期的那樣直接。 – kraftydevil 2014-04-29 02:47:22

+0

太棒了:)我喜歡這樣。 – Vignesh 2014-04-30 10:12:40

0

所有你需要做的,在至少在Xcode 7.2是給集裝箱查看以下限制

Trailing Space to Superview = -20 

Leading Space to Superview = -20 
0

這是爲我工作在Xcode中9.注意,這樣你將失去你是嵌入頂視圖的約束。因此,要將一個視圖嵌入另一個視圖:

  1. 在與要嵌入的視圖相同的級別上創建另一個空白視圖。
  2. 正確定位新視圖並將其添加到 超視圖。我認爲在大多數情況下,您希望像現有視圖一樣複製相同的約束條件。
  3. 然後,選擇需要嵌入的視圖並將其拖動到新視圖的 下。現在,您已將視圖嵌入到新視圖中。 您還需要將0嵌入式視圖 的邊緣約束添加到新視圖。

就是這樣。

相關問題