管理你的第二屏(airPlay)
来源:互联网 发布:香港大学网络教育报名 编辑:程序博客网 时间:2024/05/17 01:54
需求:
1、投射airplay后,有些页面或播放状态没有权限投射时,需要修改第二屏内容;
2、游戏时airplay后,iPhone当成手柄使用;
原来:
获取第二屏幕信息--->创建一个新的Window--->将新的Window对应的Screen屏幕设置为第二屏幕--->设置新的屏幕的UI显示。
获取第二屏幕信息
@discardableResult public func connectExternalScreen() -> Bool{ if UIScreen.screens.count > 1 { for screen in UIScreen.screens { if screen != UIScreen.main {//获取第二屏幕信息 self.didConnectExternalScreen(externalScreen: screen) return true } } } return false }
创建一个新的Window--->将新的Window对应的Screen屏幕设置为第二屏幕--->设置新的屏幕的UI显示。
fileprivate func didConnectExternalScreen(externalScreen: UIScreen) { if externalViewController == nil {//设置新的屏幕的UI显示。 let viewController = UIViewController() externalViewController = viewController } if externalWindow == nil { let window = UIWindow(frame: externalScreen.bounds)//创建一个新的Window externalWindow = window externalWindow?.rootViewController = externalViewController externalWindow?.isHidden = false } externalScreenStatus = .connected externalWindow?.screen = externalScreen//将新的Window对应的Screen屏幕设置为第二屏幕 NotificationCenter.default.post(name: NSNotification.Name.ExternalScreenDidConnected, object: nil) }
第二屏的状态监听:
extension ExternalScreenManager { public func beginObserveExternalScreen() { connectExternalScreen() NotificationCenter.default.addObserver(self, selector: #selector(self.externalScreenDidConnect(_:)), name: NSNotification.Name.UIScreenDidConnect, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(self.externalScreenDidDisconnect(_:)), name: NSNotification.Name.UIScreenDidDisconnect, object: nil) } public func stopObserveExternalScreen() { NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIScreenDidConnect, object: nil) NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIScreenDidDisconnect, object: nil) } @objc func externalScreenDidConnect(_ notifiaction:NSNotification) { let screen:UIScreen = notifiaction.object as! UIScreen self.didConnectExternalScreen(externalScreen: screen) } @objc func externalScreenDidDisconnect(_ notifiaction:NSNotification) { let screen:UIScreen = notifiaction.object as! UIScreen self.didDisconnectScrren(externalScreen: screen) }}
demo:https://github.com/easyui/SwiftMan/blob/master/SwiftManExample/SwiftManExample/ExternalScreenManagerTest.swift
阅读全文
0 0
- 管理你的第二屏(airPlay)
- 琢磨AirPlay的经历 Airplay简析
- 禁掉MPMoviePlayerController的Airplay
- AirPlay
- airplay
- AirPlay
- airplay
- 一种非AirPlay的方法来实现IOS录屏
- 说说android端实现Airplay多屏互动(一)
- 说说android端实现Airplay多屏互动(二)
- Android平台Airplay的实现方法【原创】
- 改善AirPlay效果的三个诀窍
- PC上实现AirPlay功能的软件
- Android平台Airplay的实现方法
- 基于树莓派的AirPlay功能实现
- AIRPLAY镜像音频数据的处理
- 三种主流无线同屏技术介绍(Miracast、DLNA与AirPlay技术)
- 多屏互动技术标准DLNA与Airplay
- AVPlayer 截屏(swift3.0)
- 交叉编译zlib
- androidStudio简析
- strong修饰符实现weak效果(对象释放时,属性置nil)
- OS X中Java版本管理工具jEnv
- 管理你的第二屏(airPlay)
- Python 使用matplotlib画图添加标注、及移动坐标轴位置
- iOS的标识符
- iOS10.3中划线失效
- swift项目在iOS8 通过init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle
- Database mount ID mismatch(ORA-16009: invalid redo transport destination )
- 将博客搬至CSDN
- opencv(一):图像规整
- java学习经验