`
啸笑天
  • 浏览: 3465456 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

iPhoneX指示条(visual indicator)

    博客分类:
  • ios
 
阅读更多

 

 原文地址: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
    }
}
分享到:
评论

相关推荐

    iPhoneX安全区域与H5引发的问题(Safe Area)

    预留出Home Indicator指示条 简单总结 一、什么是安全区域? 最近正在开发小程序相关的需求时,遇到了一个问题——ios高版本的安全区域,即iPhoneX及以上拥有的“刘海儿”等可滑动区域会与你开发的内容重合。 幸运...

    仿网易新闻上部 多图滑动切换指示器 indicator

    【标题】:“仿网易新闻上部 多图滑动切换指示器 indicator” 在移动应用设计中,用户界面的用户体验和视觉吸引力是至关重要的。网易新闻作为一款知名的新闻资讯应用,其设计元素往往受到开发者和设计师的关注。...

    iPhone X 美团适配记录

    3. 底部Home Indicator的引入:由于iPhone X移除了物理Home键,系统引入了一个虚拟的Home Indicator,其高度为34pt,位于屏幕底部。在设计底部导航栏时,不能将UI元素放置在这个区域,否则会被Home Indicator遮挡。 ...

    56)_流量指示器FLOW INDICATOR_150F.pdf

    56)_流量指示器FLOW INDICATOR_150F.pdf

    iPhoneX适配以及 iPhoneX 中MJRefreh 适配

    iPhone X系列在屏幕底部有一条较窄的触控区域,称为Home Indicator。在编写滚动视图时,要确保内容不会被这个区域覆盖,可以使用`scrollView.contentInsetAdjustmentBehavior`属性进行调整。 4. **使用MJRefresh...

    iOs tableView指示条进行联动

    在这种情况下,如何实现tableView与指示条(ScrollIndicator)的联动效果呢?本文将深入探讨这个主题。 首先,了解联动的基本概念。联动是指在滚动一个视图时,另一个视图也会随之滚动,以保持视觉上的连续性和一致...

    Android-CircularProgressIndicator-可定制的循环进度指示器

    在Android开发中,进度条/进度视图通常有几种类型,如HorizontalProgressBar(水平进度条)、SeekBar(滑动选择条)以及Spinner(旋转指示器)。而CircularProgressIndicator则是一种独特的圆形进度视图,它的优势...

    iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配

    最近写小程序时,遇到了 iPhoneX 底部小黑线与内容重叠的问题,实际上是iPhoneX安全区域的适配问题,了解清楚这个问题花了挺多时间的,也实操出了结果,忍不住来总结总结。 前言 在苹果 iPhoneX 、iPhone XR等设备上...

    indicator指示器

    在Android开发中,Indicator通常指的是页面指示器,用于在ViewPager中显示当前页面的状态,比如在TabLayout中常见的小圆点或者线条。ViewPager是一种强大的视图切换工具,它允许用户通过左右滑动来浏览多个页面。当...

    给ViewPager添加indicator

    而Indicator则是用来指示当前ViewPager中所显示页面的一种可视化元素,通常表现为小圆点或其他形状,用户可以通过观察Indicator了解当前浏览的是哪个页面以及总共有多少页面。本教程将详细介绍如何在Android项目中为...

    微信小程序适配iphoneX的实现方法

    与iPhone6/6s/7/8相比,iPhone X 无论是在屏幕尺寸、分辨率、甚至是形状上都发生了较大的改变,下面以iPhone 8作为参照物,先看看iPhone X尺寸上的变化: 苹果对于 iPhone X 的设计布局意见如下: 核心内容应该...

    Android Tablayout 的Indicator 长度和样式的修改

    本教程将详细讲解如何修改Android TabLayout的Indicator,即选中标签时显示的高亮条,来适应不同场景的需求。 首先,我们来看如何修改Indicator的长度。通常,TabLayout的Indicator长度会自动根据TabItem中的文字...

    Visual Assist X 10.4

    Visual Assist X具有强大的编辑特色,提高了生产效率,可以完全集成到您的Microsoft开发环境中,升级了您的IDE,在不改变编程习惯的同时就可以感受到Visual Assist X为您带来的好处。 Visual Assist X是一款非常...

    iPhoneX适配手QH5页面通用解决方案.docx

    随着iPhone X的发布,其独特的设计特点,如顶部的状态栏和底部的Home Indicator,为H5页面的适配提出了新的挑战。针对这一问题,本文主要探讨如何针对iPhone X进行手Q H5页面的适配,以确保用户体验的顺畅。 首先,...

    iPhoneX适配

    例如,可以为TabBar设置一个基于屏幕底部的安全距离约束,这样在iPhone X及其后续机型上,TabBar会自动移到安全区域下方,避免被Home Indicator遮挡。 其次,UITableView的适配也是个重点。在iPhone X中,由于存在...

    ViewPager Indicator自定义标题和指示器样式

    本教程将深入讲解如何自定义ViewPager的Indicator样式,以及如何实现标题和指示器样式的个性化定制,同时确保与滑动逻辑解耦。 首先,我们来看ViewPager的基础用法。ViewPager允许我们在一个视图内展示多个Fragment...

    Flutter自定义TabBar的Indicator.zip

    TabBar是Flutter中的一个关键组件,它允许用户在多个视图之间切换,而Indicator则是TabBar上的可视指示器,通常用来突出当前选中的Tab。 首先,让我们关注`TabBar`组件。在Flutter中,`TabBar`属于`material`库的一...

    swift-JMNotifyView一行代码实现通知视图零耦合适配iPhoneX及以上机型

    在适配iPhone X及以上机型方面,`JMNotifyView`考虑到了这些设备特有的安全区域,比如顶部的刘海屏和底部的Home Indicator。在这些设备上,通知视图会自动避免遮挡重要界面元素,确保用户界面的一致性和美观性。这...

    滑块随动indicator,附带title颜色渐变和点击响应

    在Android开发中,"滑块随动indicator"通常是指一种UI组件,用于指示用户在多个视图(如ViewPager中的页面)之间切换时的位置。这种组件不仅显示当前选中的页面,而且具有动态效果,如滑块随动和标题颜色渐变,以...

    Battery-Indicator-Pro,Android电池指示灯.zip

    《Battery-Indicator-Pro:深入解析Android电池指示器的开源实现》 在当今移动设备的世界里,电池指示器是用户界面中的重要元素,它为用户提供实时电池状态信息,从而帮助他们管理设备的用电情况。Battery-...

Global site tag (gtag.js) - Google Analytics