向使用安全区域的场景添加边距

Posted

技术标签:

【中文标题】向使用安全区域的场景添加边距【英文标题】:Adding margins to a scene that uses the Safe Area 【发布时间】:2018-04-10 18:30:31 【问题描述】:

是否可以限制到安全区域并使用边距?

我正在关注构建基本 UI here。在“采用自动布局”部分,我应该为我的堆栈视图添加约束:

即使我选中了“限制到边距”,结果如下:

没有边距!堆栈视图现在被限制在安全区域中,我认为在编写该教程时不存在该区域。显然,安全区域不允许您约束“相对于边距”(约束下拉菜单中缺少该选项):

我知道我可以关闭安全区域(查看 > 实用程序 > 显示文件检查器并取消选中使用安全区域布局指南的复选框),正如 thread 推荐的解决方案,结果如下:

但我宁愿不要失去安全区的功能。

在利用布局边距的同时不能使用安全区域吗?在使用安全区域的场景中添加边距的推荐方法是什么?必须有一个可以通过 Interface Builder 实现的优雅解决方案。

【问题讨论】:

【参考方案1】:

您可以通过将 UIStackView 嵌入到 UIView 中来使用默认视图边距:

【讨论】:

这真的是推荐的解决方案吗?这在任何地方都有记录吗?似乎是人们经常想做的事情,就像每个新的 View Controller 一样。仅仅为了这个目的添加一个额外的视图似乎很笨拙,但也许那是因为我来自 android,不鼓励向视图层次结构添加无关的视图。 安全区是新的...基本思想是:安全区划定整个界面的可见部分 ...然后可以使用视图的边距进行外观.对整个界面使用单个视图时,它没有多大意义......但是考虑一个可以拉伸整个宽度的“横幅图像”,并且下面的内容会有边距。您可能会发现这是一本好书(我在搜索中发现,这不是我的文章):blog.smartnsoft.com/…

以上是关于向使用安全区域的场景添加边距的主要内容,如果未能解决你的问题,请参考以下文章

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

向 TableViewController 添加边距

我可以向自定义快餐栏添加边距(扩展 BaseTransientBottomBar)吗?

如何向相对 div 溢出父级添加边距以向下移动内容

在 JTextArea 中添加边距?

使用盒模型