如何防止Interface Builder在子视图内容周围添加20pt填充?

问题描述:

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),仿佛使得它更转到新上海华包装的定位...

我失去了一些东西在这里?有没有办法来防止这种填充?

我终于想通了如何做到这一点,与此相关的答案:

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

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

Trailing Space to Superview = -20 

Leading Space to Superview = -20 

这是为我工作在Xcode中9.注意,这样你将失去你是嵌入顶视图的约束。因此,要将一个视图嵌入另一个视图:

  1. 在与要嵌入的视图相同的级别上创建另一个空白视图。
  2. 正确定位新视图并将其添加到 超视图。我认为在大多数情况下,您希望像现有视图一样复制相同的约束条件。
  3. 然后,选择需要嵌入的视图并将其拖动到新视图的 下。现在,您已将视图嵌入到新视图中。 您还需要将0嵌入式视图 的边缘约束添加到新视图。

就是这样。