Airplay:外部窗口上的镜像子视图

2023-11-23

关于 Airplay 的设计/架构问题。 我在 AppDelegate 中设置了外部显示器:

UIScreen *externalScreen = UIScreen.screens.lastObject;
self.externalWindow = [[UIWindow alloc] initWithFrame:externalScreenFrame];
self.externalWindow.screen = externalScreen;
self.externalWindow.backgroundColor = [UIColor redColor];

工作正常,电视以红色显示空屏幕。 现在我有一个带有一堆子视图的 ViewController,并且一个视图应该显示在设备上and外部屏幕。如果我在 ViewController.m 中尝试这个:

[_appDelegate.externalWindow addSubview:self.deviceAndTVView];

deviceAndTVView 将仅显示在外部屏幕上,不再显示在设备上。 我需要的是在设备上安装 deviceAndTVView,在触摸/用户交互时更新自身,并将这些更新镜像到外部屏幕上。

哪条是实现这一目标的正确途径?

谢谢阅读! 米


AirPlay 镜像技术的名字并不好听。它实际上以两种模式运行,一种模式是整个 iOS 设备镜像到 AirPlay 设备,另一种模式是一旦连接了镜像 AirPlay 设备,开发人员就有两个 UIWindow/UIScreen 可以使用。

您使用的是后一种模式,通常称为“镜像”,但实际上您有一个完全独立的窗口/屏幕需要管理,并且应该有更好的术语来指代这种操作模式。

你上面描述的基本上是moving一个从设备窗口到 AirPlay 窗口的 UIView,它完全按照预期工作!

没有任何技术方法可以让您拥有单实例UIView 的显示在这两个窗口上 - 它将存在于一个 UIView 层次结构或另一个 UIView 层次结构中,但不能同时存在于两个 UIView 层次结构中。换句话说,如果您希望在两个屏幕上显示相同的内容,则需要创建两个实例相同的UIView,并将它们分别添加到两个窗口中,然后在它们发生变化时更新它们。

虽然这可能不是您所期望的超级方便的“镜像”,但这可能是一件好事,因为您的 UIView 在设备上的宽高比可能与在 AirPlay 设备上的不同。通过使用两个不同的视图来显示相同​​的内容,您可以调整 AirPlay 视图的大小,以最佳地利用设备的可用分辨率。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Airplay:外部窗口上的镜像子视图 的相关文章

  • 不明白 Swift 中的闭包示例

    我正在尝试了解 swift 和闭包 我被这个例子困住了 numbers map number Int gt Int in let result 3 number return result 什么是 number Int gt Int 它是一
  • Cordova 在 iOS 中显示警告“线程警告:[您的函数]花了 [n] 毫秒”

    THREAD WARNING Console took 81 661865 ms Plugin should use a background thread 在跑步的时候iOS 手机差距项目 对于一些剩余的插件 例如地理位置和文件系统 也是
  • 如何将 LC_LOAD_DYLIB 命令插入 Mach-O 二进制文件或将静态库加入现有二进制文件 (IOS)

    这是我第一次在 stackoverflow 上提问 我很绝望 我的任务是加载 dylib 或将静态库加入到 IOS 设备的现有可执行文件中 我将使用static void attribute constructor initialize v
  • 将 UIButton 中的图像缩放到 AspectFit?

    我想将图像添加到 UIButton 并且还想缩放图像以适合 UIButton 使图像变小 请告诉我该怎么做 这是我尝试过的 但它不起作用 将图像添加到按钮并使用setContentMode self itemImageButton setI
  • 如何将相机中的图像保存到 iPhone 图库中的特定文件夹?

    嘿 我是 iPhone 新手 最近我一直在尝试制作一个应用程序 基本上 我想要做的是 如果用户将从相机捕获任何图像 那么它应该保存在设备库中 我知道如何将照片保存在图库中 它对我有用 但我无法将所有捕获的图像保存到设备图库中的特定文件夹 例
  • 设置/覆盖 UICollectionView 中单元格之间的填充

    我有一个 UICollectionView 但在获取单元格之间的填充时遇到了问题 理论上 我应该能够将屏幕除以 4 并且我可以获得包含 4 个图像的单元格大小 完美地占据屏幕宽度 但是 它选择不这样做 相反 它会创建 3 个具有巨大填充的图
  • 适用于 IOS 和 Android 的支付网关 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个应用程序 用户必须在澳大利亚餐馆通过应用程序 android ios 付款 有两种付款方式 通过 PayPal 或 Visa
  • Parse.com 和 Facebook 登录,运行无限循环

    我将 Parse 和 Facebook iOS SDK 都更新到了最新版本 当我尝试使用 Facebook 登录时 我的应用程序崩溃了 从调试器中我可以看到它正在无限循环中调用 3 4 个方法 我的登录代码如下所示 void openSes
  • 在iOS上,“添加到主页”缓存保存在哪里,如何清除它?

    我正在 iPad iOS v7 上制作一个 html5 游戏 当我将其添加到主页时 它非常顽固地释放缓存 如果我在 Safari 中查看它 这会按照您所期望的方式工作 如果我刷新一次或两次 页面就会以最新状态缓存 但在主页上却是另一回事 它
  • iOS 滚动视图允许滚动过去的内容

    我正在努力优化我的应用程序以适应横向和较小的屏幕 我主要使用滚动视图来实现这一点 在我的其中一个视图中 我有一个容器视图 当我在故事板中的设备之间切换时 这个容器视图看起来很完美 容器视图映射到具有滚动视图的视图控制器 该滚动视图的顶部 底
  • iOS 中的构建对象文件扩展名是什么?

    当我在项目中构建java对象类时 将创建带有 class扩展名的构建文件 并且人类不可读 快速构建文件怎么样 example car java gt build gt car class 构建后会是什么 car swift gt build
  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • 我的游戏中应该有多少个视图控制器?

    我开始使用 spritekit 构建我的第一个游戏 现在我只有一个视图控制器来呈现开始屏幕场景 override func viewDidLoad super viewDidLoad let scene StartScreenScene C
  • 当强制退出/向上滑动以终止 iOS 应用程序而不点击横幅/警报时,如何获取推送通知有效负载?

    我正在构建一个应用程序来处理从 Parse 推送的通知 并尝试创建通知历史记录功能 我已经成功启用了后台模式 因此当应用程序在后台运行时 应用程序可以通过以下方式很好地获取有效负载application didReceiveRemoteNo
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • 我怎样才能勾勒出文本字体?

    我想在边框 轮廓 中显示另一种颜色的文本 我正在尝试使用在 MapOverlayView 中显示文本 text drawAtPoint CGPointMake 0 30 withFont UIFont fontWithName Helvet
  • Google 地图 API -> OpenGLES 崩溃

    日志是从 Crashlytics 粘贴的 对于许多用户来说 崩溃经常发生 据我所知 它与设备 iOS 版本无关 我在我的代码中找不到任何错误 这似乎是纯粹的库问题 是 Google 地图 API 错误吗 我可以做些什么来修复它 或者我应该在
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • 如何反转 CGPath 的点顺序

    我想画一个圆圈 并用它打出字母 为此 我需要顺时针抚摸圆圈 逆时针抚摸字母 这一切都很好 但是当我使用 Core Text 获取字母路径时 我不知道如何从本质上反转该路径 不是镜像或旋转或任何东西 这很简单 我希望点笔画顺序是逆时针的 这实
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们

随机推荐

  • 如何在反应中单击时切换唯一一个元素的类

    我正在尝试在 React 中制作一组翻转的卡片 你可以在下面看到我的代码 当我点击卡片时 它们都会翻转 但我的目标是只翻转我点击的卡片 我怎样才能做到这一点 这是我的卡片组件 import React from react export d
  • Chrome 扩展内的 jQuery.ajax 调用失败

    我正在将我的 Firefox 扩展之一移植到 Chrome 但在 AJAX 查询方面遇到了一个小问题 以下代码在 FF 扩展中工作正常 但在 Chrome 中失败并显示状态 0 function IsImage url var isImag
  • 如何从docker容器访问Host机器的localhost 127.0.0.1

    我在本地主机上托管了 Git 守护进程 即 usr bin git daemon listen 127 0 0 1 base path opt as a systemd服务 我正在尝试从 docker 容器访问它 我没有提到该端口 因为我不
  • 在编译时检查模板参数是否无效

    当我选择时 我尝试包装 Windows API 函数来检查错误 正如我在之前的 SO 问题中发现的 我可以使用模板函数来调用 API 函数 然后调用GetLastError 检索它可能设置的任何错误 然后我可以将此错误传递给我的Error类
  • 无法解析 Firebase 身份验证 15.0.0

    我是 android 开发环境的新手 我需要将我的应用程序连接到 firebase 但我收到此错误 无法解析 firebase auth 15 0 0 该错误在语句中显示 implementation com google firebase
  • 在 Netty 客户端上发送多个异步请求

    首先 让我解释一下上下文 我必须创建一个客户端 它将发送许多 HTTP 请求来下载图像 这些请求必须是异步的 因为图像一旦完成 它就会被添加到队列中 然后打印到屏幕上 由于图像可能很大并且响应会分块 因此我的处理程序必须将其聚合到缓冲区中
  • 导入错误:没有名为 downsample 的模块

    我正在使用 Theano 操作系统是Ubuntu Theano 是最新的 我想知道为什么我能过得去from theano tensor signal downsample import max pool 2d命令 ImportError N
  • PDO FETCH_CLASS 和命名空间问题

    我正在尝试在对象上使用 PDO FETCH CLASS 我正在使用命名空间并只需输入 result query gt fetchAll PDO FETCH CLASS Product or result query gt fetchAll
  • Swift 中从 userInfo 获取键盘大小

    我一直在尝试添加一些代码以在键盘出现时向上移动我的视图 但是 我在尝试将 Objective C 示例转换为 Swift 时遇到问题 我已经取得了一些进展 但我仍停留在某一特定路线上 这是我一直在关注的两个教程 问题 如何使用 Swift
  • 如何向 Meteor 中的 body 元素添加 CSS 类?

    我正在启动一个 Meteor 项目 我想在不同的页面上使用不同的 body css 类 如果我向 body 添加一个 css 类 我会得到 Attributes on not supported 我发现的唯一方法是使用 JS 添加类 有一个
  • ASP.NET 中的 GridView 不显示有或没有数据

    我正在添加一个 GridView 然后在其中显示来自 SQL Server 数据库的数据 问题是 GridView 在有或没有数据的情况下都不会在浏览器中显示 这是我的代码
  • F#:如何将一个序列拆分为一系列序列

    背景 我有一系列连续的带时间戳的数据 数据序列中存在数据不连续的间隙 我想创建一种方法将序列拆分为序列序列 以便每个子序列包含连续的数据 在间隙处拆分输入序列 限制条件 返回值必须是序列的序列以确保元素仅根据需要生产 不能使用列表 数组 缓
  • 如何通过代码添加嵌套portlet(liferay)

    我们在 liferay 中有一个叫做嵌套 portlet 的东西 我想通过代码动态添加此 portlet 有谁知道添加嵌套 portlet 并在其中添加其他 portlet 的代码吗 谢谢 对于完整的示例 我假设您想要使用另一个 portl
  • 任务管理器如何杀死我的程序?

    我有一个 MFC 程序 当我用任务管理器杀死它时 我的程序出现异常 然后它崩溃了 我想从任务管理器获取事件 当它要终止我的进程并优雅地关闭我的程序时 据我所知 任务管理器用来终止进程的方法很少 1 从 应用程序 选项卡 有人告诉我它正在向我
  • Android Studio 说使用 Gradle 1.10 - 但新版本是 1.12?

    错误 The project is using an unsupported version of Gradle Please use version 1 10 My gradle build file says this dependen
  • 交错两个字符串的最Pythonic方式

    将两个字符串啮合在一起最Pythonic的方法是什么 例如 Input u ABCDEFGHIJKLMNOPQRSTUVWXYZ l abcdefghijklmnopqrstuvwxyz Output AaBbCcDdEeFfGgHhIiJ
  • Cygwin 上的 Vim:警告 vimrc 正在使用 Windows 行尾字符

    我刚刚在我的机器上安装了 cygwin 并且我刚刚完成所有设置 我在 cygwin 主目录和 Windows 主目录中的 vimrc 之间创建了一个软链接 但 vim 在读取 vimrc 文件时遇到一些困难 因为它使用 Windows 行尾
  • 宏输出中转义逗号

    我正在尝试编写一个使我能够进行转换的宏 a b c d to a a b a b c a b c d 等等 这是我到目前为止所得到的 macro rules pascal next x expr gt x x expr y expr gt
  • C# 中运算符“=>”是什么意思?

    该语句中的 gt 表示什么 del new SomeDelegate gt SomeAction 上面的声明和这个一样吗 del new SomeDelegate this SomeAction Thanks 基本上它指定一个匿名函数 不带
  • Airplay:外部窗口上的镜像子视图

    关于 Airplay 的设计 架构问题 我在 AppDelegate 中设置了外部显示器 UIScreen externalScreen UIScreen screens lastObject self externalWindow UIW