编程开发 购物 网址 游戏 小说 歌词 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
移动开发 架构设计 编程语言 互联网 开发经验 Web前端 开发总结
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
  编程开发知识库 -> Java开发 -> 管理你的第二屏(airPlay) -> 正文阅读
 

[Java开发]管理你的第二屏(airPlay)[第1页]

需求:
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
  Java开发 最新文章
nvm每次启动终端都要设置nvm use
单页面应用优缺点分析
微信小程序开发入门
jQueryEasyUi验证
CSS标签属性之position
ReactElement
Webpack+Babel+React的快速搭建
关于mongo 日期查询
Spring Boot基础教程8-web应用开发-模板引擎
java date time问题总结
上一篇文章      下一篇文章      查看所有文章
加:2017-02-15 22:11:03  更:2017-10-30 05:07:27 
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 新闻资讯 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年10日历
2018-10-18 23:48:49
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程开发知识库