【问题标题】:macOS 10.12 and iOS 10 - Obscuring portions of a screenshot?macOS 10.12 和 iOS 10 - 遮挡部分截图?
【发布时间】:2023-03-22 12:02:02
【问题描述】:

在 macOS 和 iOS 上,当用户截取在 iTunes/TV 应用程序中播放的视频文件时,屏幕截图会被遮挡,并且媒体播放器层在屏幕截图中显示为实心黑框,如下所示:

iOS:

macOS:

我在其他帖子中读到,无法隐藏/阻止用户在 iOS 设备上截屏;但是,如这些图像所示,Apple 似乎正在使用某种方法来隐藏屏幕截图文件中的视频内容。

在这些情况下,应用如何设法隐藏屏幕截图中的视频内容?

【问题讨论】:

    标签: ios macos screenshot privacy


    【解决方案1】:

    对于 MacOS,这很容易...将窗口级别设置为高于某个点,例如在我的一个应用程序中我不允许屏幕截图,我这样做(在 Objective-C 中):

    windowLevel = CGShieldingWindowLevel();
    [myWindowOutlet setLevel: windowLevel];
    

    对于 iOS,它更棘手。 You can tell when a screenshot has been taken,但没有官方 API 可以阻止它的发生。苹果开发者论坛上的一位suggested to call "touchesCancelled"

    【讨论】:

    • 所以只是为了确认,在截屏之前会调用touchesCancelled?
    • 我不知道。这只是我找到的一种可能的解决方案。试一试,看看会发生什么。
    • 而这是你知道的唯一解决方案?
    • 我的回答中有this question that I linked to 中描述的Snapchat 方法,但它也有点笨拙。最终,Apple 将不得不更改 iOS 以允许应用程序以编程方式阻止屏幕截图,您可以通过在 bugreporter.apple.com 提交增强请求来帮助实现这一点(要求此功能的开发人员越多,它就越有可能被包含在 iOS 中11 或 iOS 12)。
    • @MichaelDautermann 我没明白。也许是因为我在 Big Sur 上尝试过。当我将 CGShieldingWindowLevel 设置为我的窗口时,它出现在所有内容的顶部,我可以毫无问题地截取屏幕截图,并且它的内容出现在屏幕截图上。我做错了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2012-08-13
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多