原文地址:https://github.com/easyui/blog/blob/master/iOS/2017-10-20-iPhoneX%E6%8C%87%E7%A4%BA%E6%9D%A1.md
API
iPhone X每个控制器底部都有一个指示条(visual indicator),并且默认是一直显示的。但是有时候我们想让他隐藏,比如全屏播放视频时,还有苹果是提供这个功能的:
extension UIViewController {
// Override to return a child view controller or nil. If non-nil, that view controller's home indicator auto-hiding will be used. If nil, self is used. Whenever the return value changes, -setNeedsHomeIndicatorAutoHiddenUpdate should be called.
//控制器重写
//控制器是tab或navigation等容器时可以重现,返回当前选中的控制器,使用该子控制器的设置,返回nil则自己的prefersHomeIndicatorAutoHidden()会生效
@available(iOS 11.0, *)
open func childViewControllerForHomeIndicatorAutoHidden() -> UIViewController?
// Controls the application's preferred home indicator auto-hiding when this view controller is shown.
//控制器重写
//返回true:控制器操作时会显示,没有操作时会自动隐藏掉,
//返回false:指示条会一直显示,也是默认显示逻辑
@available(iOS 11.0, *)
open func prefersHomeIndicatorAutoHidden() -> Bool
// This should be called whenever the return values for the view controller's home indicator auto-hiding have changed.
//控制器调用
//更新指示条显示逻辑
@available(iOS 11.0, *)
open func setNeedsUpdateOfHomeIndicatorAutoHidden()
}
##例子
- 比如播放器全屏时需要指示器自动隐藏(详细代码地址):
import UIKit
open class EZPlayerFullScreenViewController: UIViewController {
weak var player: EZPlayer!
// MARK: - Life cycle
deinit {
NotificationCenter.default.removeObserver(self)
}
override open func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(self.playerControlsHiddenDidChange(_:)), name: NSNotification.Name.EZPlayerControlsHiddenDidChange, object: nil)
}
// MARK: - notification
@objc func playerControlsHiddenDidChange(_ notifiaction: Notification) {
self.statusBarHiddenAnimated = notifiaction.userInfo?[Notification.Key.EZPlayerControlsHiddenDidChangeByAnimatedKey] as? Bool ?? true
self.setNeedsStatusBarAppearanceUpdate()
if #available(iOS 11.0, *) {
self.setNeedsUpdateOfHomeIndicatorAutoHidden()
}
}
open override func prefersHomeIndicatorAutoHidden() -> Bool {
return self.player.controlsHidden
}
}
- 在tab或navigation等容器中实现,其实类似于容器中调整控制器方向:
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
}
// 返回nil, 则自己的prefersHomeIndicatorAutoHidden()中的设置会生效
// 这里返回当前选中的控制器,使用该子控制器的设置
override func childViewControllerForHomeIndicatorAutoHidden() -> UIViewController? {
return selectedViewController
}
// 注意: 此方法中的设置生效的前提是上面这个方法返回nil
override func prefersHomeIndicatorAutoHidden() -> Bool {
return true
}
}
class NavagationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func childViewControllerForHomeIndicatorAutoHidden() -> UIViewController? {
return self.viewControllers.last
}
override func prefersHomeIndicatorAutoHidden() -> Bool {
return true
}
}
相关推荐
预留出Home Indicator指示条 简单总结 一、什么是安全区域? 最近正在开发小程序相关的需求时,遇到了一个问题——ios高版本的安全区域,即iPhoneX及以上拥有的“刘海儿”等可滑动区域会与你开发的内容重合。 幸运...
56)_流量指示器FLOW INDICATOR_150F.pdf
自己写的 仿网易新闻上部 多图滑动切换指示器 indicator 右下部 小方块指示 根据page的不同而显示不同
CircularProgressIndicator - 可定制的循环进度指示器
与iPhone6/6s/7/8相比,iPhone X 无论是在屏幕尺寸、分辨率、甚至是形状上都发生了较大的改变,下面以iPhone 8作为参照物,先看看iPhone X尺寸上的变化: 苹果对于 iPhone X 的设计布局意见如下: 核心内容应该...
Visual Assist X具有强大的编辑特色,提高了生产效率,可以完全集成到您的Microsoft开发环境中,升级了您的IDE,在不改变编程习惯的同时就可以感受到Visual Assist X为您带来的好处。 Visual Assist X是一款非常...
给ViewPager添加indicator
viewpager加tab,indicator指示器,注释详细,一看就懂,希望能帮到有需要朋友
indicator-sysmonitor, 显示各种系统参数的Ubuntu应用指示器 指示器 sysmonitor---v0.8.2显示cpu温度,内存,网络速度,cpu使用率,public IP地址和internet连接状态的应用程序指示器。Unity,Xubuntu,gnome外壳 ...
ViewPager 支持 Indicator样式完全自定义,随意修改标题和指示器样式,并且实现了和滑动逻辑解耦
Dinapoli indicator target. For trading forex. Best indicator
Battery-Indicator-Pro,Android电池指示灯.zip
Whole.Tomato.Visual.Assist.X.10.6.1823 2010年6月最新破解版 visual assist [编辑本段]Visual Assist X 增强Microsoft开发环境下的编辑能力。 Visual Assist X具有强大的编辑特色,提高了生产效率,可以完全...
Android Tablayout 的Indicator 长度的修改(这里只适用于:1.指示器长度和文字长度相等,2.指示器长度填满整个TabItem)
用于Ubuntu12.04系统的indicator-sysmonitor软件显示网速、内存、CPU、温度等
单一安装,适合所有IDE:去除了针对不同IDE的单个产品,下载后,Visual Assist X可以安装到您的全部Microsoft IDE中,如果又安装了新的IDE,只需重新安装一次Visual Assist X即可。 紧密集成:Visual Assist X更加...
> 简单实用的ViewPager指示器 实现联动,自身滚动。 > > 高仿MIUI但更胜于MIUI,提供多种指示器类型。支持类型 : 下滑线(可设置指示器高度),三角形,图片 2.效果图 3.属性说明 > 开发者根据实际需要选择使用对应...
一种材料设计循环进度指示器,它旋转表示应用程序正在忙。 可用于Loading显示,也可以用作进度显示
Flutter自定义TabBar的Indicator 实现秒杀Tab效果