当前位置: 首页 > wzjs >正文

中江移动网站建设举一个网络营销的例子

中江移动网站建设,举一个网络营销的例子,九江快乐城,贵州住房和城乡建设厅网官网以下是一篇关于在 iOS 中实现画中画(PiP)功能的技术博客: iOS 画中画(PiP)功能实现指南 简介 画中画(Picture in Picture, PiP)是一项允许用户在使用其他应用时继续观看视频内容的功能。本文将详细介绍如何在 iOS 应用中实现 PiP 功能。 项目地址 github pub.dev 系统要求…

以下是一篇关于在 iOS 中实现画中画(PiP)功能的技术博客:

iOS 画中画(PiP)功能实现指南

简介

画中画(Picture in Picture, PiP)是一项允许用户在使用其他应用时继续观看视频内容的功能。本文将详细介绍如何在 iOS 应用中实现 PiP 功能。

项目地址

github
pub.dev

系统要求

  • iOS 15.0 及以上版本
  • AVKit 框架

核心组件

实现 PiP 功能主要涉及以下几个核心组件:

  1. AVPictureInPictureController - 负责管理 PiP 会话
  2. AVPictureInPictureControllerContentSource - 定义 PiP 内容源
  3. AVPictureInPictureVideoCallViewController - 控制 PiP 窗口的视图控制器

实现步骤

1. 检查设备支持

首先需要检查设备是否支持 PiP 功能:

- (BOOL)isSupported {if (@available(iOS 15.0, *)) {return [AVPictureInPictureController isPictureInPictureSupported];}return NO;
}

2. 创建 PiP 视图

需要创建一个自定义视图来显示 PiP 内容:

@interface PipView : UIView
@end@implementation PipView
+ (Class)layerClass {return [AVSampleBufferDisplayLayer class];
}
@end

3. 配置 PiP 控制器

设置 PiP 控制器需要以下步骤:

- (BOOL)setup:(PipOptions *)options {if (!self.isSupported) {return NO;}if (@available(iOS 15.0, *)) {// 创建 PiP 视图_pipView = [[PipView alloc] init];// 创建视图控制器AVPictureInPictureVideoCallViewController *pipViewController = [[AVPictureInPictureVideoCallViewController alloc] init];pipViewController.preferredContentSize = options.preferredContentSize;[pipViewController.view addSubview:_pipView];// 创建内容源AVPictureInPictureControllerContentSource *contentSource =[[AVPictureInPictureControllerContentSource alloc]initWithActiveVideoCallSourceView:options.sourceContentViewcontentViewController:pipViewController];// 初始化 PiP 控制器_pipController = [[AVPictureInPictureController alloc]initWithContentSource:contentSource];_pipController.delegate = self;_pipController.canStartPictureInPictureAutomaticallyFromInline = options.autoEnterEnabled;return YES;}return NO;
}

4. 控制 PiP 会话

启动 PiP:
- (BOOL)start {if (!self.isSupported) {return NO;}dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 0.1),dispatch_get_main_queue(), ^{if (self->_pipController.isPictureInPicturePossible) {[self->_pipController startPictureInPicture];}});return YES;
}
停止 PiP:
- (void)stop {if (self->_pipController.isPictureInPictureActive) {[self->_pipController stopPictureInPicture];}
}
释放资源:
- (void)dispose {if (@available(iOS 15.0, *)) {self->_pipController.contentSource = nil;}if (self->_isPipActived) {self->_isPipActived = NO;[self->_pipStateDelegate pipStateChanged:PipStateStopped error:nil];}
}

5. 实现状态回调

通过实现 AVPictureInPictureControllerDelegate 协议来处理 PiP 状态变化:

- (void)pictureInPictureControllerDidStartPictureInPicture:(AVPictureInPictureController *)pictureInPictureController {_isPipActived = YES;[_pipStateDelegate pipStateChanged:PipStateStarted error:nil];
}- (void)pictureInPictureControllerDidStopPictureInPicture:(AVPictureInPictureController *)pictureInPictureController {_isPipActived = NO;[_pipStateDelegate pipStateChanged:PipStateStopped error:nil];
}- (void)pictureInPictureController:(AVPictureInPictureController *)pictureInPictureControllerfailedToStartPictureInPictureWithError:(NSError *)error {[_pipStateDelegate pipStateChanged:PipStateFailed error:error.description];
}

注意事项

  1. PiP 功能仅支持 iOS 15.0 及以上版本
  2. 启动 PiP 时需要适当延迟以确保正常显示
  3. 自动进入 PiP 模式需要在 setup 时配置 autoEnterEnabled 选项
  4. 释放资源时建议使用 contentSource = nil 而不是直接调用 stopPictureInPicture
  5. PiP 窗口的默认大小建议设置为至少 100x100,否则可能导致启动失败

最佳实践

  1. 在初始化时检查设备是否支持 PiP 功能
  2. 实现适当的错误处理和状态回调
  3. 在应用进入后台时,如果启用了自动进入选项,PiP 会自动启动
  4. 注意内存管理,及时释放不需要的资源

总结

iOS 的 PiP 功能实现主要依赖于 AVKit 框架,通过合理配置 AVPictureInPictureController 及其相关组件,可以为用户提供流畅的画中画体验。在实现过程中需要注意版本兼容性、状态管理和资源释放等问题。

参考

  • Adopting Picture in Picture for video calls

PS

本次实现还不太全面,出来的PIP窗口只是一个背景黑色,还没有实现视频的显示,后续会持续更新。

http://www.dtcms.com/wzjs/238020.html

相关文章:

  • 深圳网站建设 设计卓越下载百度app最新版
  • 昆明网站建站推广南京seo招聘
  • 网页制作教程考拉广州百度seo 网站推广
  • 北京做建筑信息的网站长沙正规关键词优化价格从优
  • 泰州哪家做网站建设比较好大量微信群推广代发广告
  • 手机网站素材营销策划书格式及范文
  • 买域名之后怎样做网站开鲁网站seo站长工具
  • 英文网站模板 查看百度导航2023年最新版
  • 深圳企业网站建设公司seo工资
  • 邯郸市环保局网站建设项目环境泰安做百度推广的公司
  • 长春专业做网站的公司游戏特效培训机构排名
  • 1万流量网站 服务器配置营销必备十大软件
  • 软件工程哪个学校最好网站seo置顶 乐云践新专家
  • 筑巢网站西安疫情最新消息
  • 网站备案是怎么回事seo网站优化公司
  • 云南域名注册网站建设广州品牌营销服务
  • 网站增加栏目费用4p营销理论
  • 做付费视频网站百度指数查询官方网
  • php网站怎么做post订单seo咨询河北
  • 我做钓鱼网站自首了百度识图搜索
  • 哪个网站可以查当地建设项目51链
  • 网站建设需要怎么维护搜索优化的培训免费咨询
  • 旅游网站做模板素材外贸google推广
  • 泉州免费做网站seo优化运营
  • 网站开发创意想法江苏网页定制
  • 免费软件制作网站模板搜索引擎技术包括哪些
  • 外贸网站域名郑州网络推广厂家
  • 济南 论坛网站建设如何制作网站
  • 做股东变更要上哪个网站长沙百度推广排名
  • 网站建设与维护banner广告投放渠道有哪些