Ios 复制接口生成器';s代码中控件之间的默认间距

Ios 复制接口生成器';s代码中控件之间的默认间距,ios,xcode,interface-builder,Ios,Xcode,Interface Builder,如果我在interface builder中将一个标签添加到另一个标签的下面,我会得到一个放置位置的建议(我想这与苹果公司认为东西应该相距多远有关)。如果您不知道我在说什么,请将一个新标签拖动到另一个标签的正下方,它应该会捕捉到位,并显示一条蓝色虚线 现在我以编程方式创建一个视图,我希望得到相同的间距。有一个常数我可以用吗 编辑:又在谷歌上搜索了一下,发现这被称为“水上空间”——这让我想到: 在代码中创建视图时,您可以使用精确的空格指定框架,或者使用自动布局(这在代码中是一个非常麻烦的问题)

如果我在interface builder中将一个标签添加到另一个标签的下面,我会得到一个放置位置的建议(我想这与苹果公司认为东西应该相距多远有关)。如果您不知道我在说什么,请将一个新标签拖动到另一个标签的正下方,它应该会捕捉到位,并显示一条蓝色虚线

现在我以编程方式创建一个视图,我希望得到相同的间距。有一个常数我可以用吗


编辑:又在谷歌上搜索了一下,发现这被称为“水上空间”——这让我想到:


在代码中创建视图时,您可以使用精确的空格指定框架,或者使用自动布局(这在代码中是一个非常麻烦的问题)

苹果使用的常数通常是0、8和20。这些常量通常基于其他视图

下面是一个例子: 假设您要将一个视图,
newView
放置在另一个视图的下方,
oldView
的间距为8点

UIView *oldView;
CGRect newViewFrame = oldView.frame;
newViewFrame.origin.y += oldView.frame.size.height + 8.0f;
UIView *newView = [[UIView alloc] initWithFrame:newViewFrame];
[self.view addSubview:newView];

可以使用可视格式语言在代码中添加默认间距-默认间距由
-
字符表示。(假设您使用的是Autolayout,您应该这样做)

如果与superview边的间距不同于两个对等视图之间的间距,则这将有所不同,但它将与interface builder中的默认值相匹配


如果您感兴趣的话,我已经写过关于视觉格式语言和Autolayout的其他内容

我已经在那里找过了,但没找到。我确实考虑过了,但是我想找到一个更优雅的解决方案,而不是去解决它应该做的事情,并对它进行编码。谢谢,这看起来正是我所需要的。我没有使用autolayout,看起来它会让事情变得更简单(从长远来看,在我学会如何使用它之后)。到目前为止,我发现的唯一问题是,通过使用|字符表示superview,它忽略了顶部和底部栏。另外,我正试图在UIScrollView的一个子类中实现这一点,它的工作方式似乎与UIView不同。有关布局指南,请参见我的回答:对于滚动视图,是的,它们更难。这里有一些很好的指南,我自己也在做…谢谢,看起来这是一种更简单的方法,但是自动布局感觉更正确。如果我对自动布局感到恼火,我就这么做。