美文网首页
刘海屏幕机型HomeIndicator的适配

刘海屏幕机型HomeIndicator的适配

作者: 我贼稳 | 来源:发表于2019-04-13 21:52 被阅读0次

Edge Protect边缘保护

在冲突区域第一次执行手势的时候会优先触发App的内部手势,短时间内再次进行同样的操作则会触发系统手势。系统手势将会延迟到下一次执行。相关方法:

@interface UIViewController (UIScreenEdgesDeferringSystemGestures)

// Override to return a child view controller or nil. If non-nil, that view controller's screen edges deferring system gestures will be used. If nil, self is used. Whenever the return value changes, -setNeedsScreenEdgesDeferringSystemGesturesUpdate should be called.
//该属性控制子视图控制器是否允许开发者控制edge protect的开启或是关闭。如果实现了这个方法并且有返回值子视图控制器的edge protect设置就会遵循父VC的设置,跟随父VC是否延迟执行系统手势。
@property (nonatomic, readonly, nullable) UIViewController *childViewControllerForScreenEdgesDeferringSystemGestures API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(watchos, tvos);

// Controls the application's preferred screen edges deferring system gestures when this view controller is shown. Default is UIRectEdgeNone.
//该属性是设置edge protect的方法,返回值是一个边界的枚举
//typedef NS_OPTIONS(NSUInteger, UIRectEdge) {
//    UIRectEdgeNone   = 0,
//    UIRectEdgeTop    = 1 << 0,
//    UIRectEdgeLeft   = 1 << 1,
//    UIRectEdgeBottom = 1 << 2,
//    UIRectEdgeRight  = 1 << 3,
//    UIRectEdgeAll    = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight
//} NS_ENUM_AVAILABLE_IOS(7_0);
//效果:通知中心、控制中心和HomeIndicator两次手势才能实现相应功能
@property (nonatomic, readonly) UIRectEdge preferredScreenEdgesDeferringSystemGestures API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(watchos, tvos);

// This should be called whenever the return values for the view controller's screen edges deferring system gestures have changed.
//这个方法用来动态控制edge protect,方法中返回一个BOOL变量根据需要改变该变量的值,可以控制是否需要edge protect
- (void)setNeedsUpdateOfScreenEdgesDeferringSystemGestures API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(watchos, tvos);

@end

使用场景:iPhone X横屏游戏为防止屏幕底部操作误触发上划呼出任务中心手势,需两次上划才能呼出任务中心。

Home Indicator隐藏/显示

当界面两秒内没有进行任何交互操作的时候Home Indicator会逐渐隐去,再次点击屏幕Home Indicator会逐渐出现,注意必须是点击,滑动并不能触发显示,效果只是隐藏(非永久),但是手势依然可以使用。相关方法:

@interface UIViewController (UIHomeIndicatorAutoHidden)

//方法使用与edge protect三个方法相同
// 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.
@property (nonatomic, readonly, nullable) UIViewController *childViewControllerForHomeIndicatorAutoHidden API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(watchos, tvos);

// Controls the application's preferred home indicator auto-hiding when this view controller is shown.
@property (nonatomic, readonly) BOOL prefersHomeIndicatorAutoHidden API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(watchos, tvos);

// This should be called whenever the return values for the view controller's home indicator auto-hiding have changed.
- (void)setNeedsUpdateOfHomeIndicatorAutoHidden API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(watchos, tvos);

@end

使用场景:iPhone X以后机型全屏播放视频时,屏幕误操作2秒后HomeIndicator自动隐藏,不会遮挡画面,增强沉浸感。

注意:prefersHomeIndicatorAutoHidden和preferredScreenEdgesDeferringSystemGestures不会同时生效,如果一起使用的话只有隐藏效果生效。

相关文章

  • 刘海屏幕机型HomeIndicator的适配

    Edge Protect边缘保护 在冲突区域第一次执行手势的时候会优先触发App的内部手势,短时间内再次进行同样的...

  • iOS判断刘海屏幕机型

    原文iOS刘海手机屏幕的适配判断是不是iphone x齐刘海屏幕iOS开发 iPhoneX以上机型适配判断判断iP...

  • Android 屏幕适配-刘海屏适配

    承接Android 屏幕适配 说明:本文仅为简单总结google官方的刘海平适配方案如需具体机型适配,请自行移步g...

  • iOS 关于iPhone屏幕尺寸的一些数据

    今天聊一下iPhone当前的适配问题。 一、目前已有的机型及尺寸 二、图解 有刘海机型: 屏幕尺寸数据: 启动图数...

  • 安卓适配

    ------刘海屏------屏幕适配 | Android 刘海屏适配总结Android刘海屏适配方案Androi...

  • iOS字体适配

    随着iPhone机型种类的增加,iOS的小开发仔们各种机型的屏幕适配,字体适配是否困扰着你呢?我们都知道屏幕适配有...

  • Android 屏幕适配相关知识

    屏幕适配一直是Android开发者比较痛恨的工作,因为国内定制机型屏幕碎片化简直炸裂,现在又多了凹面屏(刘海儿屏)...

  • iOS 刘海屏界面适配

    iPhoneX - iPhone12 界面适配 适配判断刘海屏幕 navBar和tabBar的判断

  • iOS屏幕适配概述

    [toc] 1 屏幕适配简介 1.1 屏幕发展历史 手机型号 |屏幕大小 | 分辨率------------ | ...

  • iOS.iPhone-x.s.r.max系列刘海屏幕适配

    问题:刘海屏幕适配 解决:适配代码如下 扩:官方的iPhone型号对照,已更新

网友评论

      本文标题:刘海屏幕机型HomeIndicator的适配

      本文链接:https://www.haomeiwen.com/subject/euarwqtx.html