Xcode 6 为布局边距设置默认值或禁用它们

Posted

技术标签:

【中文标题】Xcode 6 为布局边距设置默认值或禁用它们【英文标题】:Xcode 6 set default values for layout margins or disable them 【发布时间】:2014-09-18 14:29:42 【问题描述】:

Xcode 6 的这个新特性有点烦人。大多数时候我不需要设置相对于边距的偏移量,如果我这样做了,我可能想要使用默认值 16 以外的值。有没有办法更改默认值或完全禁用我的项目(或所有项目)的边距我的 Xcode 中的项目)?

【问题讨论】:

【参考方案1】:

您不能“关闭它们”,因为它们是内置在 UIView 中的。您可以将它们设置为零:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
label.layoutMargins = UIEdgeInsetsMake(0, 0, 0,0);

但您必须为每个视图手动执行此操作。您可以通过在 init 之后设置它们来为您自己的子视图自动执行此操作,然后使用一个版本覆盖设置器,该版本会抛出任何传入的值。但是...一般来说,最好顺其自然,不要与框架抗争,所以我真的建议不要尝试关闭它们或忽略它们。

【讨论】:

啊,所以它们像布局指南一样内置?我只是不明白这些边距。有什么好处?添加绑定到其超级视图边缘的视图是一项常见任务,现在您每次都必须关闭“限制到边距”复选框才能执行此操作。或者您的 UI 可以轻松地使用 16 以外的默认边距,并且您必须再次避免相对于边距偏移。 是的。在其容器视图的边缘没有子视图也很常见(可能更常见)。 UITableViewCell 就是一个很好的例子。 是的,但为什么所有视图都应该有相同的边距?而且,如果您的边距不完全是 16,则将偏移量设置为超级视图比将偏移量设置为预定义的边距更容易、更直观。 这是真的,但他们必须默认某些东西,所以 Apple 将其设为 HIG 中的值。 他们至少可以让它成为一个外观选择器,这样设置(自定义)全局默认值会更容易:(【参考方案2】:

只需在约束弹出窗口中按住 Option 键 (⌥) 即可在约束到边缘 VS 视图边距之间切换。简单!

在此处查看完整答案:http://blog.manbolo.com/2014/10/09/xcode-6-auto-layout-margin-annoyances

【讨论】:

以上是关于Xcode 6 为布局边距设置默认值或禁用它们的主要内容,如果未能解决你的问题,请参考以下文章

在Xcode 9上,约束到边距不能正常工作

Qt布局设置边距

为啥 UIBarButtonItem 默认是禁用的?

Xcode 8 添加布局边距崩溃

Xcode。西布。为文本元素设置默认字体

xcode自动布局问题