在代码中复制接口构建器的控件之间的默认间距

时间:2014-01-05 17:19:10

标签: ios xcode interface-builder

如果我在界面构建器中在另一个下面添加一个标签,我会建议放置它的位置(我猜这与Apple认为应该隔开多远的距离有关)。如果您不知道我在说什么,请将新标签拖到另一个标签的正下方,它应该会卡入到位,并会出现蓝色虚线。

现在我以编程方式创建视图,我希望获得相同的间距。在某个地方我可以使用吗?


编辑:做了一些谷歌搜索,发现这被称为“Aqua space”' - 这让我想到了这个:

What constant can I use for the default Aqua space in Autolayout?

2 个答案:

答案 0 :(得分:0)

在代码中创建视图时,使用精确空格指定框架或使用自动布局(这是代码中的总痛苦)。

Apple使用的常量通常为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];

答案 1 :(得分:0)

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

如果它是与superview边缘的间距而不是两个对等视图之间的间距,则会有所不同,但它将与界面构建器的默认值匹配。

我写过关于视觉格式语言的文章,以及Autolayout的其余内容,here如果你感兴趣的话。