【问题标题】:ios- Autolayout- add constraint respect to navigation itemios- Autolayout- 添加对导航项的约束
【发布时间】:2018-02-03 02:26:42
【问题描述】:

我刚刚开始将我的应用程序移动到自动布局。 我想限制导航栏下方的标签“0”像素。 我试过但没有找到解决方案。 这是屏幕截图。

在故事板中,我从超级视图中给出了约束。

在 IOS7 中运行良好。

但在 IOS6 中,它在导航栏下方 64 像素处,因为超级视图从导航栏下方开始。

如果我可以为导航栏下方的标签添加顶部约束,它将解决问题。但我找不到怎么做。我搜索了几个问题。但是dint得到了答案。

请帮忙。

【问题讨论】:

    标签: ios autolayout


    【解决方案1】:

    iOS 11 更新:

    iOS 11 引入了安全区域的概念,将可见区域中的所有内容容器化的负担再次由视图负责,而不是视图和控制器的探戈。

    请参阅 Apple 的文档 here

    使用故事板或 XIB 时,只需在 Xcode 中启用该功能即可。这是向后兼容的,并且应该在 iOS 10 及更低版本下按预期工作。在代码中,您将使用if (@available(iOS 11.0, *)) 来决定是针对安全区域指南/锚设置约束,还是在旧系统上使用旧指南。


    使用情节提要时,您需要在顶部布局指南中添加约束。这将解决您的问题,如在 iOS6 上,即 0pt 在 iOS7 上,它是动态的。如果您使用的是 nib/xib 文件,它会变得有点复杂;您需要在代码中添加约束。实现这一点的最简单方法是创建一个到顶部垂直空间为 0 的约束,在代码和viewDidLayoutSubviews 中创建此约束的出口,将约束出口的constant 更新为self.topLayoutGuide.length 的值。

    【讨论】:

    • 这样一个广泛适用的工具添加到工具带中,并且在将近三年后仍然有效。非常感谢。
    【解决方案2】:

    你只需要对你的约束做一些修改:

    1) 为您的标签设置高度限制

    2) 将您的标签固定到主视图 - 水平空间约束

    3) 添加垂直空间约束

    第三步要小心[我附上一张图片供您参考。]

    然后,检查红色箭头标记是否仍然存在于您的视图控制器上。

    【讨论】:

    • 不正确。如果他添加一个0垂直空间,标签将在导航栏下方。
    • 嗯,实际上它是由 XCode 本身在单击红色箭头时提出的。约束似乎对我来说很好用。检查了 7.0 和 6。
    • 0 仅在您禁用扩展边缘和半透明条时有效。
    • 啊,我明白了,您正在使用情节提要。在这种情况下,0 不是用顶部视图而是用顶部布局指南创建的
    • 正是:)。我想知道是什么让你不这么想。
    猜你喜欢
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    相关资源
    最近更新 更多