• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

IOS。无论导航栏如何,都进行布局约束以粘合到状态栏底部 + X

[复制链接]
菜鸟教程小白 发表于 2022-12-13 02:35:53 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一堆 View Controller ,它们的布局略有不同,但对顶部 UILabel 的垂直位置有相同的要求。状态栏始终为 X(=70) 个单位。这些 View Controller 可能会添加到带有导航栏的导航 Controller 中。

如何创建一个相对通用的布局约束来考虑导航栏,这样无论 View Controller 是否在导航堆栈中,我的标题始终是状态栏的 X 个单位?

(我知道我可以在运行时更改现有约束的常量,但这对于很多带有 xibs 的 Controller 来说可能有点问题。我正在寻找更通用的东西,最好在界面生成器中)

我正在使用带有安全区域指南的 iOS 11 SDK。

请查看图片以获得更清晰的信息。

  1. 状态栏只有 X 个单位到状态栏。安全区顶部有一个约束,X 为常数。

1.Status bar only

  1. 状态栏+导航栏。安全区域的顶部再次受到限制,但这次为了得到我想要的结果,我必须从 X 中减去 navbar.height。常量 X - navbar.height。

2. Status bar + navigation bar

基本上,我会寻找可以根据导航栏的存在自动调整约束常数的东西。也许有可能通过几个可以“轻松”从 xib 复制到 xib 的约束来实现这一点。



Best Answer-推荐答案


如果您可以选择在代码中设置它,您可以使用这个简单的技巧:

topLabel.topAnchor.constraint(equalTo: self.view.topAnchor, constant: UIApplication.shared.statusBarFrame.height + 70).isActive = true

所以基本上你将它限制在 View 的顶部(跳过 topLayoutGuide 和安全区域指南)到常量加上状态栏的高度。

请注意,如果您允许横向模式,或者存在隐藏状态栏的 View ,则必须添加更多代码来处理这些情况。

关于IOS。无论导航栏如何,都进行布局约束以粘合到状态栏底部 + X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46243535/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap