首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用没有状态栏的safeAreaLayoutGuide

使用没有状态栏的safeAreaLayoutGuide
EN

Stack Overflow用户
提问于 2017-12-10 07:09:20
回答 2查看 524关注 0票数 1

我正在以编程的方式添加我的所有视图以及它们的自动布局约束。在我的一个视图中,我使用以下方法禁用了状态栏:

代码语言:javascript
复制
override var prefersStatusBarHidden: Bool {
    return true
}

显然,这会导致safeAreaLayoutGuide在任何不是iPhone X的东西上移动20 SE,而在我的例子中,这会导致iPhone 6/7/8/SE等的顶部没有足够的填充。

最干净的工作方法是什么?如何在iPhone 8视图上添加填充,而不将其添加到iPhone X中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-10 09:10:22

您可以使状态栏透明,以保留空间,而不是使用prefersStatusBarHidden。就间距而言,这对iPhone X没有任何影响。

代码语言:javascript
复制
let statusBarWindow = application.value(forKey: "statusBarWindow") as? UIWindow
statusBarWindow.alpha = 0.0

"statusBarWindow"实际上是私有API,所以最好像"status" + "BarWindow"之类的那样把它拆开。

票数 2
EN

Stack Overflow用户

发布于 2017-12-10 09:27:31

我想您可以使用以下解决方案:开始创建一个自定义视图(让我们称之为fakeStatusBar),该视图应该与状态栏框架相匹配,具有以下约束:

请注意,高度= 20是不够的,因为状态栏的高度取决于设备(iPhone 8+ is = 20,iPhoneX是> 20),因此必须动态更改:

代码语言:javascript
复制
self.fakeStatusBarHeight.constant = UIApplication.shared.statusBarFrame.size.height // or whatever you like, considering your padding too

因此,在这个步骤中,由于fakeStatusBar,我们有一个很好的空间,那么让我们约束您的内部视图这样做(当然,身高= 40只是一个例子):

最终结果是:

iPhoneX

iPhone 8+:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47736683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档