7

在带有 iPad 2 或 iPhone 4S 的 iOS 5 上,用户可以使用 Apple TV 和 AirPlay 启用屏幕镜像。如何防止我的应用以这种方式被镜像?有什么方法可以检测到正在发生这种镜像,以便我可以防止我的内容被镜像?

这样做的原因是因为我有法律不允许在电视屏幕上显示的内容。

4

2 回答 2

5

这是一个非常糟糕的主意,我讨厌它,因为你在抑制你的用户。话虽如此,AirPlay 镜像的工作方式与连接 VGA/HDMI 适配器的方式相同,当您连接适配器时,您可以在“第二台显示器”上显示您想要的任何内容。如果要“阻止”镜像,可以将外部显示器的窗口设置为空白/纯黑色视图。

大多数 iOS 应用程序在其生命周期中只创建和使用一个窗口。此窗口跨越设备的整个主屏幕,并在应用程序生命周期的早期从应用程序的主 nib 文件(或以编程方式创建)加载。但是,如果应用程序支持使用外部显示器进行视频输出,它可以创建一个额外的窗口来在该外部显示器上显示内容。所有其他窗口通常由系统创建,并且通常是为了响应特定事件(例如来电)而创建的。

查看适用于 iOS 的 View Programming Guide,特别是 Windows 部分和在外部显示器上显示内容

于 2011-12-07T22:30:39.983 回答
2

只是添加代码来做这个非常简单的工作在这里

if ([[UIScreen screens] count] > 1)
    {
        UIScreen *secondScreen = [[UIScreen screens] objectAtIndex:1];
        CGRect screenBounds = secondScreen.bounds;
        UIWindow *secondWindow = [[UIWindow alloc]initWithFrame:screenBounds];
        secondWindow.screen = secondScreen;
        UIView *anyView= [[UIView alloc]initWithFrame:screenBounds];
        anyView.backgroundColor= [UIColor blackColor];
        [secondWindow addSubview:anyView];
    }
于 2015-05-02T22:24:53.443 回答