【问题标题】:Autolayout adding extra padding自动布局添加额外的填充
【发布时间】:2014-02-20 19:37:09
【问题描述】:

我在 Storyboard 中有一个 UITableViewController,我将其作为子视图添加到 UIViewController 中的一个单独的 UIView,我的最终目标是让 UITableView 与状态栏齐平,以便滚动在状态栏下方(不是通过它与冲突)。

我已将单独的 UIView 配置为在垂直和水平方向上的约束均为 0,但如图所示,我相信自动布局会添加我在布局中包含的 20px y 偏移量。如果我删除 20px y 偏移量(并将 UIView 调整为整个布局),我最终会发生冲突。

【问题讨论】:

    标签: ios objective-c uiview uikit autolayout


    【解决方案1】:

    我建议您按如下方式设置您的视图控制器。在 IB 中创建一个 UIViewController 并添加一个简单的 UITableView 作为其主视图的子视图。我几乎从不使用 UITableViewController,因为它几乎没有附加价值,但它限制了您将子视图添加到表视图中。现在,您将 table view 的原点定位到 (0, 20) 并将 table view 的顶部布局约束设置为 top layout guide 而不是 superview。也许您应该在 IB 中打开靠近约束常数值的下拉菜单: 这样,您的表格视图将在状态栏下方开始。

    但请注意,iOS 7 设计指南建议您实际上扩展顶部栏(导航栏和状态栏)下的内容。您应该创建一个 20 点高的半透明背景 png,将其放在状态栏下方,并让表格视图在状态栏下方滚动。在这种情况下,您也不应忘记检查视图控制器的“调整滚动视图插图”选项。

    【讨论】:

    • 谢谢!你能推荐一种不使用 UITableViewController 来添加刷新控件的方法吗?
    • 您可以在 SO 中尝试一些 q&a 的建议,例如 stackoverflow.com/questions/12497940/… 否则您可以使用带有容器视图的原始视图结构(在这种情况下,将容器视图的约束设置为顶部布局指南)或者您更改 UI 并在状态栏下包含半透明背景 - 这样您也将与 iOS 7 的 UI 指南保持一致。
    • 注意:如果您不希望您的内容仅最初出现在状态栏下(即当表格视图滚动到顶部时),则设置就足够了将表格视图的顶部内容插入到状态栏的高度。如果您直接使用表视图控制器,如果您在界面构建器中检查 vc 的“调整滚动视图插图”选项,视图控制器会自动为您执行此操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 2015-01-11
    相关资源
    最近更新 更多