gpt4 book ai didi

ios - 即使 `edgesForExtendedLayout` 设置为 `top`,状态栏和 toplayout 指南底部 anchor 之间的差距

转载 作者:行者123 更新时间:2023-11-28 14:03:12 26 4
gpt4 key购买 nike

我有一个简单的 View Controller ,只需使用

即可模态呈现
viewController.present(myVC, animated: true, completion: nil)

myVC View Controller 没有任何嵌入式导航 Controller ,在 myVCviewDidLoad 中,我设置的 View 应该表现得像导航栏 View (我不能不幸的是使用导航栏/导航 Controller )

这是我如何以编程方式添加 View

            self.view.addSubview(topView)
topView.translatesAutoresizingMaskIntoConstraints = false
topView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
topView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
topView.topAnchor.constraint(equalTo: self.topLayoutGuide.bottomAnchor).isActive = true
topView.heightAnchor.constraint(equalToConstant: 70).isActive = true

我在 myVCviewDidLoad 中将扩展边指定为顶部

self.edgesForExtendedLayout = .top

UI 看起来像

enter image description here

状态栏和添加的 View 之间有一个空白,用黄色边框突出显示,我不确定如何修复:(

请帮忙

最佳答案

之所以会出现间隙,是因为您将 topView 的顶部约束添加到 View 的 topLayoutGuide.bottom(位于缺口下方)。所以这是预期的行为。

摆脱这种差距的最干净的方法是将您的 View Controller 嵌入 UINavigationController 并使用真正的导航栏。

但如果你做不到,你必须自己消除差距。

我想不出一个优雅的方法来消除这个差距,但你可以在与差距一样高的约束中添加一个负常量:

topView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: -14).isActive = true

但是您必须确保这仅在具有 safeAreaLayoutGuide.topAnchor > 0 的设备上完成。(iPhoneX 等)。在所有其他设备上,常量必须为 0

正如我所说,这不是一个非常稳定或优雅的解决方案,但它会起作用。

顺便说一句,如果可能,您应该将 self.topLayoutGuide.bottomAnchor(已弃用)更改为 view.safeAreaLayoutGuide.topAnchor

关于ios - 即使 `edgesForExtendedLayout` 设置为 `top`,状态栏和 toplayout 指南底部 anchor 之间的差距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53314690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com