自动布局添加额外的填充
Posted
技术标签:
【中文标题】自动布局添加额外的填充【英文标题】:Autolayout adding extra padding 【发布时间】:2014-02-20 19:37:09 【问题描述】:我在 Storyboard 中有一个 UITableViewController,我将其作为子视图添加到 UIViewController 中的一个单独的 UIView,我的最终目标是让 UITableView 与状态栏齐平,以便滚动在状态栏下方(不是通过它与冲突)。
我已将单独的 UIView 配置为在垂直和水平方向上的约束均为 0,但如图所示,我相信自动布局会添加我在布局中包含的 20px y 偏移量。如果我删除 20px y 偏移量(并将 UIView 调整为整个布局),我最终会发生冲突。
【问题讨论】:
【参考方案1】:我建议您按如下方式设置您的视图控制器。在 IB 中创建一个 UIViewController 并添加一个简单的 UITableView 作为其主视图的子视图。我几乎从不使用 UITableViewController,因为它几乎没有附加价值,但它限制了您将子视图添加到表视图中。现在,您将 table view 的原点定位到 (0, 20) 并将 table view 的顶部布局约束设置为 top layout guide 而不是 superview。也许您应该在 IB 中打开靠近约束常数值的下拉菜单: 这样,您的表格视图将在状态栏下方开始。
但请注意,ios 7 设计指南建议您实际上扩展顶部栏(导航栏和状态栏)下的内容。您应该创建一个 20 点高的半透明背景 png,将其放在状态栏下方,并让表格视图在状态栏下方滚动。在这种情况下,您也不应忘记检查视图控制器的“调整滚动视图插图”选项。
【讨论】:
谢谢!你能推荐一种不使用 UITableViewController 来添加刷新控件的方法吗? 您可以在 SO 中尝试一些 q&a 的建议,例如 ***.com/questions/12497940/… 否则您可以使用带有容器视图的原始视图结构(在这种情况下,将容器视图的约束设置为顶部布局指南)或者您更改 UI 并在状态栏下包含半透明背景 - 这样您也将与 iOS 7 的 UI 指南保持一致。 注意:如果您不希望您的内容仅最初出现在状态栏下(即当表格视图滚动到顶部时),则设置就足够了将表格视图的顶部内容插入到状态栏的高度。如果您直接使用表视图控制器,如果您在界面构建器中检查 vc 的“调整滚动视图插图”选项,视图控制器会自动为您执行此操作。以上是关于自动布局添加额外的填充的主要内容,如果未能解决你的问题,请参考以下文章