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

Har*_*ngh 29 xcode interface-builder ios

IB,停止添加填充!

看到20px(相当于)填充?IB会在两种情况下自动执行此操作,当您点击Cmd + =自动调整超级视图以适合子视图内容时,以及何时选择Editor > Embed In > UIView, UIScrollView etc..

后者特别烦人,因为它需要一步一步节省时间并将其转换为重新定位麻烦,这比手动操作稍微好一点,并且在将它们拖动到不同位置时丢失所有子视图的相对位置层次结构.

另外,通过Embed In选项,IB将新的超级视图包装的位置移动(-20,-20),好像这样可以更好......

我在这里错过了什么吗?有没有办法防止这种填充?

Zac*_*ris 37

我终于想出了如何做到这一点,与这个答案有关:

在Interface Builder中组视图

  1. 选择要嵌入的所有视图(通过shift或命令单击它们).
  2. 编辑 - >嵌入 - >视图.这会创建一个带有多余20像素填充的视图"A".
  3. 使用您想要的实际边界创建一个新视图"B"(因此在所有边上比"A"小20个像素).
  4. 将旧容器视图"A"拖动到新容器视图"B"中(Xcode将在"B"中为您居中,保留所有子元素的当前位置).
  5. 单击旧容器视图"A",然后转到Editor-> Unembed.

现在,您的子元素在视图"B"中正确定位,并且没有20像素填充.

在Xcode 4.5中测试过.

PS当你想要一个侧边栏并同时支持3.5英寸和4英寸显示器时,这种技术特别有用.您可以为侧边栏和主视图指定相应的自动调整大小,然后根据它们缩放子视图.我无法获得GLKit视图以尊重自动调整规则,因此我设置了普通视图并在其中嵌入了GLKKit视图,并启用了所有红色自动调整条:

GLKView嵌套的子视图帧大小和边界大小不正确

  • 很好的技术.谢谢.但基本上正确答案是"你不能"? (6认同)
  • 大!仍然是xcode 7的有效解决方法 (2认同)

Ant*_*Pak 5

真是个好消息!终于有了UIView Xcode 10无需任何调整即可嵌入视图!

只需使用新的View Without Insets子菜单。

到目前为止,他们还没有做同样的事情UIScrollView……