ios 导航栏未完全覆盖手机屏幕顶部

q8l4jmvw  于 2023-11-19  发布在  iOS
关注(0)|答案(5)|浏览(188)

我添加了一个没有导航控制器的导航栏,所以导航栏只是一个长条。有没有办法让导航栏覆盖整个手机屏幕的顶部?


的数据

2admgd59

2admgd591#

如果你使用的是SwiftUI,你可以将这个修饰符添加到NavigationView中:

.edgesIgnoringSafeArea(.top)

字符串

sulc1iza

sulc1iza2#

尝试为导航栏设置一个委托对象。

navigationBar.delegate = self

字符串
在你的代理对象中符合UIBarPositioningDelegate,并将bar附加到顶部;

ViewController: UIViewController, UIBarPositioningDelegate {
    
    func position(for bar: UIBarPositioning) -> UIBarPosition {
        return .topAttached
    }
    
}

t98cgbkg

t98cgbkg3#

如果没有导航控制器,您将负责调整导航栏的大小和定位。请尝试添加一些约束,将顶部、前导和尾随锚点固定到超级视图的顶部、前导和尾随锚点。接下来,添加一个约束,将导航栏的底部固定到安全区域的底部,该约束的常量为44 pts,无论您想要什么高度。

mu0hgdu0

mu0hgdu04#

简单地在你的dummyNavBar上面添加一个虚拟视图,在你的控制器声明类下面声明你的顶视图:

let topView = UIView()

字符串
现在在viewDidLoad中设置top查看背景颜色并添加约束:

topView.backgroundColor = .white // the background must be the same of your dummyNavBar
topView.translatesAutoresizingMaskIntoConstraints = false

view.addSubview(topView)
topView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
topView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
topView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
topView.bottomAnchor.constraint(equalTo: yourDummynavBar.topAnchor).isActive = true

yzckvree

yzckvree5#

这对我很有效。
在Swift中-
您可以使用iOS 15* 的UINavigationBarAppearance(),其中您的根导航设置如下:

var navigationViewController = UINavigationController()
    navigationViewController.navigationBar.backgroundColor = .purple
    let appearance = UINavigationBarAppearance()
    appearance.backgroundColor = UIColor.blue
    appearance.titleTextAttributes = [.foregroundColor: UIColor.white]
    UINavigationBar.appearance().scrollEdgeAppearance = appearance

字符串
在SwiftUI中-

.edgesIgnoringSafeArea(.top)

相关问题