我正在尝试在xib中添加导航栏,但是导航栏没有填充到顶部,而是在其上方留出了相机缺口的位置。请参见下面的屏幕截图:
这是我对导航栏的限制:
我还尝试将导航栏的顶部约束设置为Superview。其结果是:
我不敢相信这很困难。我在这里想念什么?
答案 0 :(得分:1)
UINavigationBarDelegate
并设置导航栏的委托(navigationBar.delegate = self
) func position(for bar: UIBarPositioning) -> UIBarPosition { return .topAttached }
答案 1 :(得分:0)
几乎几乎不需要将UINavigationBar
直接添加到视图控制器的view
中,而是希望将视图控制器嵌入UINavigationController
中。如果您使用情节提要,则可以通过选择视图控制器,单击“编辑器”菜单->“嵌入”->“导航控制器”来执行此操作。
如果不使用情节提要板,则可以创建一个视图控制器,并将其设置为UINavigationController
的根视图控制器。然后显示导航控制器或将该导航控制器嵌入到选项卡控制器或拆分控制器中。
let mySpecialViewController = MySpecialViewController()
let navigationController = UINavigationController(rootViewController: mySpecialViewController)
present(navigationController, animated: true)
上面的代码需要从UIViewController
子类内部调用。
如果您是通过应用程序委托来设置应用程序的初始视图控制器的,则可以这样做:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let mySpecialViewController = MySpecialViewController()
let navigationController = UINavigationController(rootViewController: mySpecialViewController)
window?.rootViewController = navigationController
window?.makeKeyAndVisible()
return true
}
答案 2 :(得分:0)
遇到了同样的问题,并且能够找到解决方案。您需要做的是设置委托,在返回UIBarPositionTopAttached的委托中实现positionForBar:
- (UIBarPosition)positionForBar:(id <UIBarPositioning>)bar
{
return UIBarPositionTopAttached;
}