首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果NavigationController中嵌入了ViewController,则无法隐藏状态栏

如果NavigationController中嵌入了ViewController,则无法直接通过代码隐藏状态栏。这是因为NavigationController会自动管理状态栏的显示和隐藏,而不受ViewController的控制。

要隐藏状态栏,可以通过以下两种方法实现:

  1. 在Info.plist文件中添加"View controller-based status bar appearance"字段,并将其值设置为NO。然后,在AppDelegate中的application:didFinishLaunchingWithOptions:方法中添加以下代码:
代码语言:txt
复制
UIApplication.shared.statusBarHidden = true

这将全局隐藏状态栏,无论NavigationController中是否嵌入了ViewController。

  1. 在NavigationController的子类中重写preferredStatusBarStyle方法,并返回UIStatusBarStyle.none。然后,在ViewController中调用navigationController的setNeedsStatusBarAppearanceUpdate方法来更新状态栏的显示:
代码语言:txt
复制
class CustomNavigationController: UINavigationController {
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

// 在ViewController中调用
self.navigationController?.setNeedsStatusBarAppearanceUpdate()

这样可以在特定的ViewController中隐藏状态栏,而不影响其他ViewController。

推荐的腾讯云相关产品:腾讯云移动应用分析(MTA),它提供了全面的移动应用数据分析服务,帮助开发者深入了解用户行为、应用性能等信息,优化应用体验。产品介绍链接地址:https://cloud.tencent.com/product/mta

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS状态栏设置

的配置,ViewController的配置不生效 也可以在Info.plist添加默认的状态栏样式 Status bar style设置为UIStatusBarStyleLightContent或UIStatusBarStyleDefault...加载时会自动调用preferredStatusBarStyle方法和prefersStatusBarHidden方法 如果要想之后事件里设置前景色或隐藏的话,可以把样式和是否隐藏设置为全局变量,修改变量后直接调用...ViewControllerNavigationController,那么直接在ViewController设置是不生效的,只能在NavigationController设置 所以如果你用的Storyboard...配置的NavigationController话,就必须为NavigationController添加一个自定义的类,就稍显麻烦了,所以并不推荐用这种方式设置 设置背景色 改变方法有两种 系统提供的方法...; 注意 1) appear.translucent配置在早期系统会崩溃,不建议配置,建议在ViewController配置 2) 在translucent=true也就是透明时,barTintColor

2.7K11
  • UI篇-关于单个页面屏幕旋转要注意的问题

    前言 有时候,我们会需要在整个项目中,使某一个ViewController支持屏幕旋转,而其他的ViewController并不能自动旋转。这是一个很常见的需求,下面就屏幕旋转相关问题做个小结。...mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height); } }]; } 注意状态栏无法强制旋转...,在手机方向不变的情况下,所以,最好把状态栏隐藏掉,回复的时候再显示出来。...NSNotificationCenterdefaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil]; 屏幕旋转时,状态栏会默认隐藏的...---- 小结 关于屏幕旋转的问题,目前先写这些,后续如果有新的东西收获,会更新上去的。

    3.6K20

    UI篇-UINavigationController之易忘补充

    ---- 对nextVC 进行属性赋值后,执行push跳转,方法的执行顺序:  A跳转到B 代码顺序执行: B的init 方法;(此方法  B的navigationController 不存在...viewDidAppear 其他知识补充 [UIApplication sharedApplication].statusBarHidden = YES; 上述方法只能实现在程序跳过loading(即启动画面)的时候才能隐藏状态栏...如果想要在启动画面开始即隐藏状态栏,则要修改app的info.plist文件,新增UIStatusBarHidden键(Status bar is initially hidden),其值是YES。...将状态栏隐藏就可实现这样不错的页面效果 PS:  backBarButtonItem的自定义事件是不会被执行的 backItem = [[UIBarButtonItem alloc] initWithTitle...自带了一个工具栏,通过设置 self.navigationController.toolbarHidden = NO来显示工具栏,工具栏的内容可以通过viewController的toolbarItems

    2.1K20

    【IOS开发基础系列】Navigation页面导航专题

    对于父级VC与子级VC分别有navigationController的情况,即不是使用push方式加载子VC,而是通过AddChildViewController的方式添加的场景,父级导航条会覆盖在子级导航条上面...,所以需要在载入时把父级导航条做隐藏处理: 1.2 navigationItem         在含有导航条的ViewController,VC的navigationItem与VC.navigationController...animated: (BOOL)animated{     //如果进入的是当前视图控制器     if (viewController == self) {         //背景设置为黑色        ...2.5.8 Tabbar的显示与隐藏 Tabbar的隐藏函数,其实只在Nav Push的之前调用时起作用 //隐藏Tabbar [viewController setHidesBottomBarWhenPushed...: YES]; [super pushViewController: viewController animated: animated]; 而Tabbar的显示,只有在Pop函数调用前执行才真正起作用

    43520

    # iOS导航栏控制Tips

    1.导航栏的显示与隐藏 导航栏的显示与隐藏,分两种情况: 1.从不显示导航栏的页面push到显示导航栏的页面。 2.从显示导航栏的页面Push到不显示导航栏的页面。...比如,当页面用户输入了一些内容后,用户要点击返回,想要回到上一个页面时,提醒用户是否要缓存已经输入的内容。 如果我们重写了导航栏的返回按钮,那么处理这种情况就很Easy,不做赘述了。...在原始堆栈数组判断是否存在该类型的控制器,如果存在记录其索引。 在复制的数组中将索引及上方所有控制器移除。 把将要push出来的控制器添加到复制的数组。...viewController) { return; } // 如果要push的界面不是 parentClass以及其子类的实例,则按照方法1处理 if (!...,直接push if (!

    1.7K31

    iOS学习—— UINavigationController的返回按钮与侧滑返回手势的研究

    提供一个解决方案就是在进入viewController时 - (void)viewDidAppear:(BOOL)animated; 禁用侧滑手势,然后在离开viewController时 - (void...viewController钟有UIScrollView及其子类的view时,侧滑手势影响用户体验效果,此时用户将无法通过侧滑进行返回。...backBarButtonItem的标题过长(没有设置默认是上一级标题),那么系统可能会自动用“Back/返回”来代替返回按钮的标题。...此外,如果是自定义的左按钮,系统不会修改其值。...侧滑手势失效 self.navigationItem.backBarButtonItem = barItem; //不影响侧滑手势 backBarButtonItem的自定义不能影响返回按钮的标题和图片,不会隐藏最左边的返回箭头

    6.7K60

    iOS状态栏使用总结

    目录: 一、状态栏与导航栏 二、设置状态栏显隐与字体样式 三、设置状态栏背景色 四、启动页隐藏状态栏 五、状态栏、导航栏相关的常用宏定义 相关文章:iOS导航栏的使用总结 一、状态栏与导航栏 状态栏...,代码的位置很重要;在AppDelegate写入可以设置整个App页面的状态栏样式; 如果需要单独设置其中一个页面隐藏状态栏,需要在进入页面时设置隐藏,退出页面时设置显示,以保证不影响其他页面的状态栏样式...//状态栏和导航栏背景色为白色,状态栏文字为黑色 self.navigationController.navigationBar.barStyle = UIBarStyleDefault; //状态栏和导航栏背景色为黑色...,状态栏文字为白色 self.navigationController.navigationBar.barStyle = UIBarStyleBlack; 三、设置状态栏背景色 iOS7之后的状态栏和导航栏融合在一块...四、启动页隐藏状态栏 App启动页如果不需要显示状态栏信息,可以设置隐藏

    1.9K30

    实践-小效果 Ⅰ

    new]; self.navigationController.navigationBar.translucent=NO; 这种方式有个副作用就是他回使导航条占64个像素,如果是整个项目都做完之后使用这种方法隐藏的话需要修改全局...:alertControlleranimated:YEScompletion:nil]; } [self.collection reloadData]; } 7.类似滴滴打车软件左边侧滑时动态隐藏...状态栏: 相信细心的朋友会发现,状态栏是动态隐藏了,可是由于缺少状态栏的20像素,造成了背部的视图整体上移了20像素,我使用的是系统自带的导航栏,也尝试了动态增加 导航栏的高度从...这时view controller对status bar的设置优先级高于application的设置,用下面的方式隐藏status bar: 1、在view controller调用setNeedsStatusBarAppearanceUpdate...- (BOOL)prefersStatusBarHidden { return YES; } 就可以达到动态隐藏和显示状态栏的目的。

    1.2K30

    iOS 知识小集(Status Bar变换)

    背景 iOS 中经常会有需要在某个界面改变状态栏颜色或者某个界面隐藏状态栏的需求。而改变状态栏颜色和控制状态栏显示和隐藏的API,在iOS 的不同版本也发生了很多变化。...想要改变状态栏的样式,想要控制状态栏的显示与隐藏,该怎么做呢? ** 1....重写ViewController方法** 首先,要确保plist文件【View controller-based status bar appearance】为YES,没有添加这个key的时候,默认是...要重写的方法 因为这三个方法都有默认值,如果我们要的状体栏样式什么的跟默认值效果一致,则不需要重写;如果不想要默认的效果,直接在这三个方法里return 相应的值即可。...注意点 ** 情形一 ** 如果我们使用UINavigationController,会发现在原来的ViewController里修改状态栏的style不起作用了,但是控制状态栏的显示和隐藏依然OK。

    1.3K21

    【IOS开发基础系列】Storyboard专题

    由于无法从nib中加载应用程序委托,也无法从故事板文件中加载应用程序委托,我们必须告诉UIApplicationMain 应用程序委托类的名称,否则它根本无法找到应用程序委托类。...这将导致增加一个 ViewController 到画布:         当然你也可以直接从 Object Library 拖一个NavigationController,但 Embed In 命令更简单一些...在文档树这些关系显示如图中所示:         注意 TableViewController 上被加入了一个navigationBar。...故事板默认使用“Inferred”(依靠推断)设置,意思是该场景如果NavigationController显示则会显示导航条,如果在 TabBarController 显示则会显示TabBar,...注意:如果你事先无法确定 cell 高度,或者你有不同高度的几种 cell,你应该使用heightForRowAtIndexPath。

    1.1K30

    iOS系统中导航栏的转场解决方案与最佳实践

    NavigationController 的 Stack 存储结构下,每当 Stack ViewController 修改了导航栏,势必会影响其他 ViewController 展示的效果。...在使用 setBackgroundImage:forBarMetrics: 方法的过程如果图像里存在 alpha 值小于 1.0 的像素点, translucent 的值为 YES,反之为 NO。...如果真的要隐藏导航栏 如果我们需要隐藏导航栏,请保证所有的 ViewController 能坚持如下原则: 每个 ViewController 只需要关心当前页面下的导航栏是否被隐藏。...在 viewWillAppear: ,统一设置导航栏的隐藏状态。...转场动画与导航栏隐藏动画的一致性 如果在转场的过程还会显示或者隐藏导航栏的话,请保证两个方法的动画参数一致。

    2.4K30

    iOS开发过程的奇淫技巧记录

    中保存的当前页面 [self.navigationController pushViewController:vc animated:YES];          //结束当前界面 __weak typeof...NSException * e) {          NSLog(@"Exception: %@", e);          return;       } 约束一个元素的位置,最原始的就是frame,如果是使用约束...,也需要至少指定左、上,宽、高,否则约束会出现异常(xib配置约束或者使用Masonry配置约束),比方设置一个view在屏幕的底部的约束: [view mas_makeConstraints:^(MASConstraintMaker...imageView.layer.cornerRadius = imageView.frame.size.width/2; imageView.layer.masksToBounds = YES; 界面进入后隐藏输入框默认焦点的键盘...的预加载     [viewController load];      //[viewController loadViewIfNeeded];

    59820

    iOS学习——获取当前最顶层的ViewController

    在iOS开发过程,我们经常性会需要获取当前页面的ViewController,然后利用ViewController进行一些操作,例如在最顶层的ViewController上展示一个UIAlertController...开始寻找(如果有多个UIWindow则要考虑UIWindow的选择问题。   ...在寻找的过程,要分别考虑当前ViewController是UITabBarController和UINavigationController的情况,同时还要考虑到当前ViewController是否通过...ps:   如果是需要push新的视图,就非常简单了。用上面的方法获取到顶层的视图,判断currentVC.navigationController是否为nil。...(为nil,新建UINavigationController,然后再push;否则直接用currentVC.navigationController去push)。

    6.6K50
    领券