导航栏没有完全覆盖 phone 屏幕的顶部
Nav bar does not fully cover top of phone screen
我添加了一个没有导航控制器的导航栏,所以导航栏只是一个条带。有没有办法让导航栏覆盖整个 phone 屏幕的顶部?
如果没有导航控制器,您将负责调整栏的大小和位置。请尝试添加一些约束,将顶部、前导和尾随锚点固定到父视图的顶部、前导和尾随锚点。接下来,添加一个约束,将导航栏的底部固定到安全区域的底部,常数为 44 pts,无论您想要什么高度。
只需在你的虚拟导航栏上添加一个虚拟视图,在你的控制器声明下声明你的顶视图class:
let topView = UIView()
现在在 viewDidLoad 中设置 topView 背景颜色并添加约束:
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
如果您使用的是 SwiftUI,则可以将此修饰符添加到 NavigationView:
.edgesIgnoringSafeArea(.top)
尝试为导航栏设置委托对象。像;
navigationBar.delegate = self
在您的委托对象中符合 UIBarPositioningDelegate
并将栏附加到顶部;
ViewController: UIViewController, UIBarPositioningDelegate {
func position(for bar: UIBarPositioning) -> UIBarPosition {
return .topAttached
}
}
我添加了一个没有导航控制器的导航栏,所以导航栏只是一个条带。有没有办法让导航栏覆盖整个 phone 屏幕的顶部?
如果没有导航控制器,您将负责调整栏的大小和位置。请尝试添加一些约束,将顶部、前导和尾随锚点固定到父视图的顶部、前导和尾随锚点。接下来,添加一个约束,将导航栏的底部固定到安全区域的底部,常数为 44 pts,无论您想要什么高度。
只需在你的虚拟导航栏上添加一个虚拟视图,在你的控制器声明下声明你的顶视图class:
let topView = UIView()
现在在 viewDidLoad 中设置 topView 背景颜色并添加约束:
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
如果您使用的是 SwiftUI,则可以将此修饰符添加到 NavigationView:
.edgesIgnoringSafeArea(.top)
尝试为导航栏设置委托对象。像;
navigationBar.delegate = self
在您的委托对象中符合 UIBarPositioningDelegate
并将栏附加到顶部;
ViewController: UIViewController, UIBarPositioningDelegate {
func position(for bar: UIBarPositioning) -> UIBarPosition {
return .topAttached
}
}