提问人:Muhammad Wasim 提问时间:2/11/2020 最后编辑:Muhammad Wasim 更新时间:6/23/2021 访问量:188
如何在整个应用程序的顶部添加一个 UIView,将每个屏幕设计向下推送
How to add a UIView at top of whole app that pushes every screen design to downward
问:
当互联网不可用时,我打算在应用程序顶部添加一个 UIView。我正在使用这段代码,它也可以正常工作。
let currentWindow: UIWindow? = UIApplication.shared.keyWindow
self.myView = UIView(frame: CGRect(x: 0, y: 0, width: currentWindow?.frame.size.width ?? 620 , height: newSafeArea.bottom + 35))
currentWindow?.addSubview(self.myView)
但是这个代码的主要问题,我想添加它,屏幕也应该向下推,如下图所示。
PS:这将添加到Window对象上,并且需要保留在每个屏幕上。
以前
后
答:
0赞
Muzamil
2/14/2020
#1
对此几乎没有解决方法。在网络更改时,您可以简单地将视图顶部约束的常量从 0 调整为所需的警报高度,反之亦然。然后在 App Delegate 中添加警报。
评论
0赞
Muhammad Wasim
2/14/2020
如何调整每个屏幕的约束大小?我在上面已经提到过,我们正在将其添加到 Window,每个 ViewController 都应该相应地调整!
0赞
Muzamil
2/14/2020
这无法操纵关键窗口的框架以降低警报的屏幕。这听起来可能毫无希望,但事实就是如此
0赞
Muhammad Wasim
2/21/2020
感谢您@Muzamil回答,但我想我们仍然可以在不在每个控制器中添加这么多视图的情况下实现这一目标,我想实现这种可重用性和通用代码。让我们希望其他人能有更好的主意。再次感谢您抽出时间接受采访
0赞
user499846
6/23/2021
#2
您可以尝试添加其他安全区域插图
var newSafeArea = UIEdgeInsets()
newSafeArea.top += 50
self.additionalSafeAreaInsets = newSafeArea
如果你需要对所有视图控制器执行此操作,最好的办法是将它们都放在一个超类中的所有子类,然后在横幅视图出现时进行此更新
以下是相关文档 https://developer.apple.com/documentation/uikit/uiview/positioning_content_relative_to_the_safe_area
评论
.zero