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

iPhone:在多个视图控制器中隐藏/显示状态栏的问题

在iOS应用中,要在多个视图控制器中隐藏/显示状态栏,可以使用以下方法:

  1. 在视图控制器中重写prefersStatusBarHidden方法,并返回一个布尔值,表示是否隐藏状态栏。例如:
代码语言:swift
复制
override var prefersStatusBarHidden: Bool {
    return true
}
  1. 如果需要在多个视图控制器中使用不同的状态栏显示设置,可以在每个视图控制器中重写prefersStatusBarHidden方法,并返回不同的布尔值。
  2. 如果需要在同一个视图控制器中动态更改状态栏的显示/隐藏,可以调用setNeedsStatusBarAppearanceUpdate()方法来强制更新状态栏的显示状态。例如:
代码语言:swift
复制
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    setNeedsStatusBarAppearanceUpdate()
}

override var prefersStatusBarHidden: Bool {
    return true
}

需要注意的是,这种方法只能在iOS 13及更高版本中使用。在iOS 12及更低版本中,需要使用其他方法来隐藏状态栏。

另外,如果需要在多个视图控制器中隐藏/显示状态栏,可以考虑使用导航控制器或选项卡栏控制器等容器视图控制器,并在容器视图控制器中设置状态栏的显示/隐藏。

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

相关·内容

最新iOS设计规范三|3大界面要素:栏(Bars)

有时,导航栏右侧也会有一个控件,如“编辑”或“完成”按钮,用于管理活动视图内容。拆分视图中,导航栏可能会显示拆分视图单个窗格。...如果导航栏包含多个文本按钮,需要通过在按钮之间插入固定空格项目来增加分隔。以此来避免按钮文本同时显示造成按钮无法区分问题。 考虑导航栏中使用分段控件,使APP层次结构更加扁平。...iPhone上侧边栏又分为半屏和全屏,手机QQ、滴滴打车都从原来都半屏改为了全屏,曹操专车采用是半屏。 ? 您可以通过使用边栏样式列表并将其放置拆分视图主列来创建边栏。...有几种常见技术可以做到这一点: · APP中使用导航栏,该导航栏会自动显示状态栏背景,并确保内容不会显示状态栏背后 · 状态栏背后显示自定义图像,如渐变色或纯色 · 状态栏背后放置模糊视图...通常,iPhone上使用三到五个标签;如果需要,iPad上可以接受更多一些。 当人们导航到您应用其他区域时,请不要隐藏标签栏。标签栏可为您应用启用全局导航,因此它在任何地方都应保持可见。

9.8K10

iOS状态栏使用总结

分页控制:视图控制器里通过prefersStatusBarHidden方法设置。...,代码位置很重要;AppDelegate写入可以设置整个App页面的状态栏样式; 如果需要单独设置其中一个页面隐藏状态栏,需要在进入页面时设置隐藏,退出页面时设置显示,以保证不影响其他页面的状态栏样式...此时全局设置操作都是无效,需要分页设置才能修改其样式,即:每个视图控制器或者控制器基类中使用如下代码: - (UIStatusBarStyle)preferredStatusBarStyle {...//return NO; //设置状态栏显示 } 但是,这里存在一个问题:如果当前视图控制器是UINavigationController视图控制器,preferredStatusBarStyle...这是因为导航控制器preferredStatusBarStyle才具有修改状态栏样式能力,解决这个问题方法有两种: 方法1:添加子类导航控制器 我们需要使用自定义子类导航控制器,在其中添加如下代码

1.9K30

iOS 9人机界面指南(四):UI元素(上) - 腾讯ISUX

不要创建自定义状态栏。用户依赖系统默认状态栏一致性。就算你可能会在应用隐藏它,也不宜定制一个新UI来代替原有系统状态栏。 避免滚动内容直接透过状态栏显示。...以下有一些方法可以让滚动内容能正常显示状态 栏后面: 使用导航控制器(navigation controller)来展示内容。导航控制器自动展示状态栏背景,同时能确保内容视图不会出现在状态栏后面。...千万千万,避免状态栏后面叠加会分散注意力内容。尤其是,你不能让用户觉得轻击状态栏之后可以获取内容或激活你应用控件。 隐藏状态栏时请慎重。由于状态栏是透明,通常情况下不需要隐藏它。...工具栏: 是半透明 iPhone上,工具栏始终位于屏幕底部,而在iPad上则有可能出现在顶部 当键盘被唤起、用户使用了手势、或者当前视图变为竖屏情况下,工具栏可以隐藏。...举个例子,对分视图: 可以横屏环境展示并排展示两个窗格 可以让主窗格详情窗格上方显示,也可以不需要时候(尤其是竖屏情况下)隐藏主窗格。

10.1K51

iOS 知识小集(Status Bar变换)

背景 iOS 中经常会有需要在某个界面改变状态栏颜色或者某个界面隐藏状态栏需求。而改变状态栏颜色和控制状态栏显示隐藏API,iOS 不同版本也发生了很多变化。...iOS 7以前 iOS 7之前,状态栏是不占视图位置。每个控制器根view都是从屏幕Y轴20px处开始显示。...iOS 7以前状态栏设置 从API来看,那时候也是支持代码里修改状态栏样式以及显示隐藏。只是因为状态栏对整个APP影响不大,所以一般plist里设置好后,用不着再去修改了。 ?...plist设置 然后视图控制器,重写如下三个方法即可: ?...情形二 状态栏样式、是否显示实际上是由顶层window的当前视图控制器决定

1.3K21

ViewController及View生命周期1. 起因2. Controller生命周期3. View生命周期4. 内存警告

自定义cell时候也有这种问题,如果在init添加控件的话,那么self.frame.size.width也不一定是准确宽度,一般解决方法是使用[UIScreen mainScreen].bounds.size.width...: isMovingFromParentViewController 会在viewWillDisappear & viewDidDisappear 方法内部调用这个方法判断视图控制器视图隐藏是否因为视图控制器从它容器视图控制器移除...isBeingDismissed 会在viewWillDisappear & viewDidDisappear 方法内部调用这个方法判断视图控制器视图隐藏是否因为视图控制器被清退 (dismissed...,与上面被其它视图控制器显示对应,如信息录入完成,返回之前视图控制器)。...如果正在显示,做处理,会让用户感觉很不舒服。 更严谨一点,还需要判断view是否已经加载。如果没有加载,就不需要干掉了。 实际开发为了写少点,都会写在基类控制器

1.3K30

iOS项目——项目开发环境搭建

当然,是否需要隐藏状态栏,我们也可以开发过程根据需要通过代码方式进行设置。 可以根据需要设置是否隐藏状态栏,是否需要全屏等设置。   ...例如,开发类似王者荣耀游戏时这里几个选项应该是设备类型选择Universal,设备方向是左横屏 + 右横屏,勾选隐藏状态栏,同事也勾选需要全屏。...App:这就是正常App图标,安装好之后桌面显示,或者分享推荐时显示应用也是这个尺寸图标 App store:应用商店显示图标 ?   ...如果启动图片是iPhone6屏幕大小图片,则在iPhone X上只显示iPhone6屏幕大小区域,上下会有两条黑边。因此,我们再设定启动界面的时候一般是需要适配各种屏幕大小尺寸启动图片。...当用户主屏幕上点击您应用程序图标时,iPhone OS会立即显示这个启动图像。一旦准备就绪,您应用程序就会显示首屏幕,来替换掉这个启动占位图像。

1.4K150

关于刘海打理这种事儿,美团点评iOS工程师早就有经验了,不信你看!

图1.4 “我Tab”表现 图1.1乍一看表现还不错,可是图1.2,下拉刷新之后,我们导航栏还是被刘海挡住了。搜索也中枪,搜索首页没有办法取消,“热门搜索区域”也多出来一块儿空白。...图2.5 iPhone X 状态栏高度 "如果你 App 是隐藏 StatusBar ,建议重新考虑。...iPhone X 为用户垂直空间上提供了更多展示余地,且状态栏也包含了用户需要知道信息,除非能通过隐藏状态栏带给用户额外价值,否则苹果建议大家将状态栏还给用户。"...② 搜索页面输入框位置发生了偏移,这是因为 iOS 11 导航栏视图层级结构发生了变化,和 iPhone X 并无直接关系。iOS 11 导航栏视图层级关系如下: ?...这个问题也是导航栏结构视图下会出现,原因是新导航栏结构用了 AutoLayout 布局,我们这个并不是用常规 UIBarButtonItem 方式实现,而是一个 UIBarButtonItem

2.1K70

iOS开发UINavigation系列四——导航控制器UINavigationController

:(UIViewController *)rootViewController; 通过以下方法对视图控制器进行管理操作: //设置管理视图控制器 - (void)setViewControllers:...@property(null_resettable,nonatomic,readonly) UIToolbar *toolbar; //导航返回手势对象 //iOS7之后,导航右划会进行pop...; 四、iOS8后导航新特性 //这个方法是为了iOS方法命名统一,导航,其作用和push一样 - (void)showViewController:(UIViewController *)vc...; //屏幕滑动时候隐藏导航栏,常用于tableView,上滑隐藏导航栏,下滑显示,带动画效果 @property (nonatomic, readwrite, assign) BOOL hidesBarsOnSwipe...; //横屏时候隐藏导航栏 @property (nonatomic, readwrite, assign) BOOL hidesBarsWhenVerticallyCompact; //敲击屏幕可以隐藏显示导航栏

1.8K20

iOS多设备适配简史以及相应API支撑实现

远古iPhone3和iPhone4时代,设备尺寸都是固定3.5inch,没有所谓适配问题,只需要用视图frame属性进行硬编码即可。...一直在做iOS开发程序员相信在下面的两个版本交界处需要处理适配坎一定让你焦头烂额过: iOS7出来后视图控制器视图默认尺寸是占据整个屏幕,如果有半透明导航条的话也默认是延伸到导航栏和状态栏下面...当然苹果也为上面两次大改版提供了诸多解决方案: iOS7视图控制器提供了如下属性来解决版本兼容性问题: @property(nonatomic,assign) UIRectEdge edgesForExtendedLayout...从上面的这些属性可以看出苹果提出这些解决方案其主要是围绕解决视图和导航条、滚动视图状态栏、屏幕边缘之间关系而进行。...因为iOS7和iOS11两个版本控制器视图和上面所列出一些内容之间关系变化最大。

1K30

基础篇-UIApplication、UIWindow以及程序启动流程看我就够了

) iOS 状态栏设置(iOS9 中跟状态栏有关已经过期,状态栏交给控制器UIViewController管理了) 应用界别的跳转 (openURL) 一 、设置应用程序图标右上角红色提醒数字(...iOS程序启动完毕后,创建第一个视图控件就是UIWindow,接着创建控制器View,最后将控制器View添加到UIWindow上,于是控制器View就显示屏幕上了。...UIWindowDidResignKeyNotification 这四个通知对象object都代表当前已显示隐藏),已变成keyWindow(非keyWindow)window对象,其中...分配新视图控制器到窗口root viewcontroller,然后使窗口显示屏幕上。...分配新视图控制器到窗口root viewcontroller,然后使窗口显示屏幕上。 四大对象关系图和程序启动流程图 ? ?

1.5K20

iPhone X 适配指南 (官方翻译版)

iPhone X上预览您应用程序。您可以使用Simulator(Xcode附带)来预览应用程序,并检查剪辑和其他布局问题。一些功能,如宽彩色图像,最好在实际设备上预览。 提供全屏体验。...请注意,当背景任务(如录音和位置跟踪)处于活动状态时,iPhone X上状态栏不会改变高度。 如果您应用程序目前隐藏状态栏,请重新考虑iPhone X上决定。...iPhone显示高度为4.7 寸iPhone显示屏提供了更多内容垂直空间,状态栏占据您应用程序可能赢得屏幕区域状态栏显示人们发现有用信息,只能隐藏以交换附加值。...手势 iPhone X上显示屏使用屏幕边缘手势来访问主屏幕,应用程序切换器,通知中心和控制中心。 避免干扰系统范围屏幕边缘手势。人们依靠这些手势每个应用程序工作。...您应用程序不能影响这些按钮,因此避免键盘重复这些按钮造成混乱。请参阅自定义键盘。 资源 下载Photoshop和Sketch 资源 iPhone X UI设计模板。 原文链接

2.4K50

【最新】iPhone X 交互设计官方指南

iPhone X 上预览您应用程序。您可以使用 Simulator(附带 Xcode)来进行预览,并且可以检查剪辑和其他布局相关问题。例如宽彩色图像之类属性,你最好在设备上进行预览。...但是请注意,当背景任务(例如录音和位置跟踪)处于活动状态时,iPhoneX 上状态栏并不会改变高度。 如果你应用程序对隐藏状态栏进行了隐藏,那么请重新考虑 iPhone X 上设计。...iPhone显示高度为 4.7 英寸,并且它屏幕上提供了更多垂直空间内容,状态栏占据了你应用程序本来可以使用屏幕区域,状态栏显示了对人们有用信息,只有交换附加值时候才能被隐藏。...同样道理,iPhone X 上图稿全屏显示时会被裁剪或者添加黑边。 如果要继续使用在 4.7 英寸 iPhone 上全屏显示图稿,一定要注意在两种显示尺寸上兼容性问题。...不要遮挡或突出显示关键显示特性。不要隐藏设备圆角和传感器外壳,也不要通过屏幕顶部和底部放置黑色条方式来突出主屏幕指示器。

1.9K20

View编程指南(二)

它与您应用程序View controller协同工作,以方便更改。 iOS,Windows没有标题栏,关闭框或其他视觉装饰。一个window始终只是一个或多个view空白容器。...Windows会在显示隐藏通知或者接受或退出密钥状态时生成通知。 您可以使用这些通知应用程序其他部分执行操作。...对于不包含状态栏显示半透明状态栏应用程序,请将view大小设置为与window大小相匹配。对于显示不透明状态栏应用程序,请将您view放置状态栏下方并相应地缩小其大小。...容器view控制器root据状态栏是否可见,自动调整view大小。...例如,当您显示隐藏状态栏显示警报视图时,系统会自动创建所需window来显示这些项目。

78510

实现边到边体验 | 让您软键盘动起来 (一)

insets } 在这个例子,我们获取到 系统视窗边衬区,然后更新视图内边距,这是一个常见应用场景。...姗姗来迟了十年后,我们终于可以回答这个关于如何查看软键盘可见性 StackOverflow 问题 Android 如何查看软键盘可见性?...上问题,来看一下这个 11 年前关于如何关闭软键盘问题。...应用可以从任何视图获得一个控制器,然后我们就可以通过传入 IME 类型,并执行 show() 或者 hide() 函数来实现显示隐藏软键盘: val controller = view.windowInsetsController...// 显示软键盘( IME ) controller.show(Type.ime()) // 隐藏软键盘 controller.hide(Type.ime()) 然而,这个控制器不单单能控制隐藏显示软键盘

28420

iOS导航栏使用总结

目录: 一、设置导航栏样式 二、解决自定义导航栏返回按钮后侧滑不可用问题 三、隐藏导航栏底部分割线 四、导航栏引起布局问题 相关文章:iOS状态栏使用总结 一、设置导航栏样式 设置导航栏样式可分为全局设置与局部设置...; 1.全局设置 全局设置一般都是AppDelegate设置,这样整个app都会生效,相关代码与效果图如下: //1.设置导航栏背景颜色 [[UINavigationBar appearance...导航栏视图层级图 从图中可以看出,导航栏底部分割线是一个UIImageView对象,而且高度只有0.5,所以我们可以据此获取到导航栏底部分割线对象,一个视图控制器实现此需求,代码如下: #import...,用于优化滑动类视图(继承于UIScrollView视图)视图控制里显示: iOS系统导航栏UINavigationBar与标签栏UITabBar默认都是半透明模糊效果,在这种情况下系统会对视图控制器...,默认值是UIRectEdgeAll,即:当前视图控制器里各种UI控件会忽略导航栏和标签存在,布局时若设置其原点设置为(0,0),视图会延伸显示到导航栏下面被覆盖。

3.1K20
领券