iOS14 画中画(PictureInPicture)

2024-05-31 14:38

本文主要是介绍iOS14 画中画(PictureInPicture),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

早在iOS9的时候,画中画功能已存在,只是只适用在ipad上,iOS14在iphone新增画中画功能。画中画功能可拖动到屏幕之外,但保持播放状态。

适用场景

  • home键回到后台时,视频用“画中画”播放
  • 点击视频播放器上某一个PIP按钮,视频切换为“画中画”播放

基本使用

1. 开启后台模式
2. #import <AVKit/AVKit.h> 创建AVPictureInPictureController
注:如果是使用系统播放器AVPlayerViewController,设置allowsPictureInPicturePlayback = YES即可

//1.判断是否支持画中画功能
if ([AVPictureInPictureController isPictureInPictureSupported]) {//2.开启权限@try {NSError *error = nil;[[AVAudioSession sharedInstance] setCategory:AVAudioSessionOrientationBack error:&error];[[AVAudioSession sharedInstance] setActive:YES error:&error];} @catch (NSException *exception) {NSLog(@"AVAudioSession发生错误");}self.pipVC = [[AVPictureInPictureController alloc] initWithPlayerLayer:self.player];self.pipVC.delegate = self;
}

3. 开启/关闭画中画

if (self.pipVC.isPictureInPictureActive) {[self.pipVC stopPictureInPicture];
} else {[self.pipVC startPictureInPicture];
}

4. 代理 AVPictureInPictureControllerDelegate

// 即将开启画中画
- (void)pictureInPictureControllerWillStartPictureInPicture:(AVPictureInPictureController *)pictureInPictureController;
// 已经开启画中画
- (void)pictureInPictureControllerDidStartPictureInPicture:(AVPictureInPictureController *)pictureInPictureController;
// 开启画中画失败
- (void)pictureInPictureController:(AVPictureInPictureController *)pictureInPictureController failedToStartPictureInPictureWithError:(NSError *)error;
// 即将关闭画中画
- (void)pictureInPictureControllerWillStopPictureInPicture:(AVPictureInPictureController *)pictureInPictureController;
// 已经关闭画中画
- (void)pictureInPictureControllerDidStopPictureInPicture:(AVPictureInPictureController *)pictureInPictureController;
// 关闭画中画且恢复播放界面
- (void)pictureInPictureController:(AVPictureInPictureController *)pictureInPictureController restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler;

值得注意的是,关闭画中画会执行
pictureInPictureController:restoreUserInterfaceForPictureInPictureStopWithCompletionHandler: 这个代理方法,用来恢复播放界面的

全局画中画注意点

1.  通过一个全局变量持有画中画控制器,可以在pictureInPictureControllerWillStartPictureInPicture持有,pictureInPictureControllerDidStopPictureInPicture释放;
2. 有可能不是点画中画按钮,而是从其它途径来打开当前画中画控制器,可以在viewWillAppear 进行判断并关闭;
3. 已有画中画的情况下开启新的画中画,需要等完全关闭完再开启新的,防止有未知的错误出现,因为关闭画中画是有过程的;
4. 如果创建AVPictureInPictureController并同时开启画中画功能,有可能会失效,出现这种情况延迟开启画中画功能即可。

效果图

这篇关于iOS14 画中画(PictureInPicture)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1018216

相关文章

iOS14,UIDatePicker高度变小无法滚动

先设置style,再设置frame if (@available(iOS 13.4, *)) {_datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels;} else {// Fallback on earlier versions}_datePicke

会声会影画中画是什么 会声会影画中画视频制作方法 视频剪辑制作教程

市面上的很多特效,都能用会声会影的画中画功能进行复刻。搭配专属面板中的坐标轴和关键帧,会声会影甚至可以在原特效的基础上,制作出更加精细的画中画效果。有关会声会影画中画是什么,会声会影画中画视频制作的问题,本文将进行详细介绍。 一、会声会影画中画是什么 画中画就是图像的叠加。在早期的电视综艺剪辑中,画中画就是不同尺寸的矩形画面叠加。随着以会声会影为代表的视频剪辑软件的出现,画中画效果又被赋予了很

OBS 录屏软件:录制圆形头像画中画,设置卡通人像(保姆级教程,有步骤图,建议收藏)

Mac分享吧 文章目录 一、OBS录屏软件 圆形头像画中画效果注意:圆形画中画仅需要`在软件中设置一次`,每次录制,使用带有圆形头像画中画的场景 录制视频即可。`该场景不可删除!!!若删除,则需要重新设置。`1.1 `新建场景`。步骤图如下:1.2 添加`[macOS屏幕捕获]`----录屏的设备,并进行设置。步骤图如下:1.3 添加`[视频采集设备]`----录人像的设备,并进行设置。步骤

Edge浏览器视频画中画可拉动进度条插件Separate Window

平时看一些视频的时候,一般需要编辑一些其他的东西,于是开启画中画,但是画中画没有进度条,需要大幅度的倒退前进得回到原视频,很麻烦。这里推荐插件Separate Window,可实现画中画进度条拉动和播放sudu的调节。 下载地址:Separate Window 忽略插件安装,直接使用 点击插件列表中的Separate Window 点击select,然后鼠标左击你要开启画中画的视频,即

iOS小技能:UITableView的适配 (iOS10/iOS14/iOS16.0)

文章目录 引言I iOS16.0 横竖屏切换适配1.1 获取当前屏幕横竖屏状态1.2 iOS16.0调完转屏方法后,需要重新更新view的frame1.3 自定义页脚 II 解决UITableViewCell兼容问题(iOS14适配)2.1 问题分析2.2 解决方案 III iOS10 系统关于UITableView的适配问题3.1 代理方法的执行顺序3.2 尾部视图的展示 引言

iOS小技能:iOS14相册权限适配 (Limited Photo Library Access)

文章目录 前言I iOS14相册权限适配1.1 选择允许被访问的图片资源1.2 相册权限API的相关改动1.3 适配demo II 具体适配方案2.1 手动触发选择/取消选择图片以移除访问权限的界面2.2 相册访问方式3.2.1 只读权限3.2.2 只写权限3.2.3 读写权限 2.3 其他需要注意的API2.4 监听第一次相册授权时 III 选择图片资源视图

iOS14适配【UIDatePicker新增的默认样式UIDatePickerStyleInline】如果想继续使用播轮样式Wheels,直接修改preferredDatePickerStyle即可

文章目录 前言I、适配方案1.1 修改UIDatePicker样式为播轮样式1.2 小知识回顾 前言 iOS 14 中,UIDatePicker新增的默认样式UIDatePickerStyleInline

iOS14 适配:【KVC 不允许访问 UIPageControl的pageImage解决方案】方案一:preferredIndicatorImage结合color相关的方法来处理。方案二:自定义控件

文章目录 前言I、KVC 不允许访问 UIPageControl的pageImage的解决方案1.1 方案1: 借助iOS14新增的API:preferredIndicatorImage 修改指示器小圆点的大小以及形状1.2 方案2: 自定义UIPageControl see also其他解决方案:自定义PageControl 前言 同 iOS 13 更新时的 textFiel

iOS14适配汇总:【1、隐私权限相关:定位、相册、IDFA 2、KVC相关: UIPageControl的pageImage3、UIView相关:UITableViewCell兼容;4、网络相关】

文章目录 前言I、隐私权限相关的适配II、KVC相关的适配III、UIView相关的适配IV、第三方框架相关4.1 QMUIKit在iOS14 下首次唤起键盘卡住主线程] V、网络相关VI、Mac Catalyst 相关6.1 判断App是运行在Mac还是iPhone上 VII 真机调试 前言 I、隐私权限相关的适配 【定位授权新增了精确和模糊定位 可根据不同的需求设置不同的定

iOS小技能: 解决UITableViewCell兼容问题(iOS14适配)

文章目录 前言I 问题分析1.1 其他分析视图层级的方法:私有API _printHierarchy 和recursiveDescription1.2 注意事项 II 解决UITableViewCell兼容问题2.1 全局修改2.2 问题: 使用文件预浏界面的打印功能,闪退。2.3 注意事项2.3.1 cell.subviews2.3.2 通过superview 获取cell的也需做相关修改