显然,改变的导航栏高度在以前的IOS版本,有可能通过隐藏默认的导航栏,添加一个新的自定义框架改变的导航栏高度面临着一种新的方法在iOS的11:
self.navigationController?.setNavigationBarHidden(true, animated: false)
let customNavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 64))
self.view.addSubview(customNavigationBar)
Run Code Online (Sandbox Code Playgroud)
但它似乎无法在iOS 11 xCode beta中运行.无论新高度是多少,它都会保持在44.
这就是我在xCode 9中得到的:
有谁知道如何解决这个问题?
刚下载了xcode 9,我有这个奇怪的问题,在ios 11上,我的自定义导航栏看起来是一半大小并且在状态栏下,在ios 10上工作正常.
所以这是我的代码
let newNavbar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 64))
let navItem = UINavigationItem()
//create and assign the items
newNavbar.setItems([navItem], animated: false)
view.addSubview(newNavbar)
Run Code Online (Sandbox Code Playgroud)
这是一个截图,左边是ios11,右边是ios10,
我已经尝试了所有可以找到的解决方案,包括:在iOS 9.0中不推荐使用setStatusBarHidden,但它们都不适用于我的应用程序.
它是一个简单的单视图应用程序.导航栏上有一个按钮,状态栏应显示在其上.
在我的.plist中:
状态栏最初隐藏:NO
状态栏样式:UIStatusBarStyleLightContent
基于视图控制器的状态栏外观:否
改变任何这些似乎都没有任何区别.我已选中状态栏样式"在应用程序启动期间隐藏"选项,因为我不希望它出现在启动画面上.
我有:
- (BOOL)prefersStatusBarHidden
{
return NO;
}
-(UIStatusBarStyle)preferredStatusBarStyle
{
NSLog(@"style");
return UIStatusBarStyleLightContent;
}
Run Code Online (Sandbox Code Playgroud)
而setNeedsStatusBarAppearanceUpdate这肯定是所有调用的时候,视图负载在我的ViewController.
视图在.storyboard中建立,但许多字段也在ViewController.m中进行操作.分配给模拟指标中状态栏的值似乎也没有任何影响.
我需要在启动屏幕中隐藏状态栏并在viewController上显示.请帮我找一个不使用已弃用的setStatusbarHidden的解决方案!
编辑:
我还没有解决这个问题,我肯定不会是唯一一个遇到这个问题的人!它发生在我写的两个应用程序中.