V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ethusdt
0.01D
V2EX  ›  程序员

X 怎么做到修改 iOS 截屏内容的?

  •  
  •   ethusdt ·
    FaiChou · Nov 10, 2025 · 6824 views
    This topic created in 170 days ago, the information mentioned may be changed or developed.

    X screenshot

    新版的 X 在截图前(如图所示)详情位置的右上角 follow 按钮,截图后,会变成 X.com (左边截图是用旧版本的截屏)。

    这很奇怪,是怎么做到的?有新的 API 吗?

    之前很多应用会在灵动岛上方隐藏一个 app 名称,截图时候会看到。但这种方式仅仅是隐藏在灵动岛下方,视觉上看不见,可以被截图。

    另外一种(已知)可以截图改变的方式是使用 SecureField,密码输入框截图时候会自动隐藏内容。

    所以很好奇他们是怎么实现的。

    Supplement 1  ·  Nov 10, 2025
    录屏也有。。

    并且找了个第三方的推特 app 试了下,那个位置是 🐦‍⬛.com 而不是 X.com

    有点意思,感觉是 DRM 呢
    Supplement 2  ·  7 days ago
    44 replies    2025-11-12 09:39:18 +08:00
    mrgeneral
        1
    mrgeneral  
       Nov 10, 2025
    截屏有 API 可以感知,比较狠的是 12123 ,现在压根就不允许截屏了。
    iMiata
        2
    iMiata  
       Nov 10, 2025
    最近申请了公司的移动端办公发现微软的 outlook 和 teams 都能拦截 iOS 的截屏,截出来是一张完全空白的白色纯色图片
    dzdh
        3
    dzdh  
       Nov 10, 2025
    ai 说是 UIScreenshotService
    finab
        4
    finab  
       Nov 10, 2025
    密码输入框有一层特殊的 View,这层 View 在运行时获取到,然后用这个覆盖住按钮就能在截屏时隐藏掉这个按钮。
    Leviathann
        5
    Leviathann  
       Nov 10, 2025
    tg 也是 群组可以设置成截图时隐藏聊天内容
    usVexMownCzar
        7
    usVexMownCzar  
       Nov 10, 2025 via iPhone
    大公司可以申请某些东西,小公司的技巧就是密码输入框作为整个页面的容器。
    SakuraYuki
        8
    SakuraYuki  
       Nov 10, 2025   ❤️ 1
    你说的那些灵动岛位置的 logo 其实平时也不在那里,也是截图的时候出现的
    duanxianze
        9
    duanxianze  
       Nov 10, 2025
    试了下安卓没有这个功能,遗憾啊
    timesh
        10
    timesh  
       Nov 10, 2025
    @mrgeneral 可以阿,ios 哪些页面不能呢?
    yyzh
        11
    yyzh  
       Nov 10, 2025 via Android
    duanxianze
        12
    duanxianze  
       Nov 10, 2025
    @duanxianze #9 我是说安卓的 x 没有实现这个功能
    SmallBlueZhao
        13
    SmallBlueZhao  
       Nov 10, 2025
    @timesh 12123 的个人电子证件那个不让截图了
    xkeyC
        14
    xkeyC  
       Nov 10, 2025
    输入框设置 secureTextEntry + 子视图实现的,常被用来遮挡不让截图录屏的内容
    wangmn
        15
    wangmn  
       Nov 10, 2025
    pdd 截图还生成二维码呢。
    nasaboy
        16
    nasaboy  
       Nov 10, 2025
    iOS26 怎么复现不了
    maia5
        17
    maia5  
       Nov 10, 2025 via iPhone
    你也看叔叔呀
    arthurblake
        18
    arthurblake  
       Nov 10, 2025
    @SmallBlueZhao 确实。
    Domado
        19
    Domado  
       Nov 10, 2025
    我也很好奇这个问题
    bqx619
        20
    bqx619  
       Nov 10, 2025
    这个玩意在起点上可以说是用的淋漓尽致了
    @mrgeneral
    moult
        21
    moult  
       Nov 10, 2025
    @SakuraYuki #8
    灵动岛的 LOGO 一直都在的,不是截图的时候加的。在 Mac 上使用 iPhone 镜像的时候就能看见了。
    Bananana
        22
    Bananana  
       Nov 10, 2025
    没道理啊,iOS 的截图 API ,只能在用户发生截图后把事件通知给 APP 而已
    Bananana
        23
    Bananana  
       Nov 10, 2025
    @mrgeneral iOS 没这种不允许截屏的 API 啊,只有在截屏后通知应用发生了截屏的回调
    dddedd
        24
    dddedd  
       Nov 10, 2025
    有的 app 不能截屏,双持安卓,直接把 API 给禁了 🐶
    liyafe1997
        25
    liyafe1997  
       Nov 10, 2025
    @Bananana 有没有可能是截屏前就通知了,发生截屏的一瞬间(在真正截屏之前) App 修改了 UI 。iOS 上不允许截屏也是用这个原因,让你截出来的一瞬间永远截到的是白的或者其它画面。
    ethusdt
        26
    ethusdt  
    OP
       Nov 11, 2025 via iPhone
    @liyafe1997 没可能
    Tomatopotato
        27
    Tomatopotato  
       Nov 11, 2025
    去 reddit 找个 ios 开发的版块问问更快
    diudiuu
        28
    diudiuu  
       Nov 11, 2025
    专业的人来回答吧
    linuxsir2020
        29
    linuxsir2020  
       Nov 11, 2025
    @iMiata MAM 或者 MDM, 有数据保护策略吧
    SakuraYuki
        31
    SakuraYuki  
       Nov 11, 2025
    @moult 为啥我用 iPhone 镜像的时候没有,你这是什么版本的
    freewarcraft
        32
    freewarcraft  
       Nov 11, 2025
    @mrgeneral 我还以为这是安卓版特有的限制,没想到 iOS 也可以
    Shatyuka
        33
    Shatyuka  
       Nov 11, 2025
    可以考虑用双层 UI ,下面是 logo ,用于截屏时显示;上面是设置了 secureTextEntry 的 UITextField ,把你自己要隐藏的 view 挂在下面,截屏时 UITextField 会被系统隐藏。
    https://developer.apple.com/documentation/uikit/uitextinputtraits/issecuretextentry
    ethusdt
        34
    ethusdt  
    OP
       Nov 11, 2025
    @Shatyuka 那上层呢?如果 X app 是这样做的,上层应该是个 follow button 可以和用户交互。看这个文档,应该不能把 UITextField 自定义成 button 的样式和用户交互吧。
    Bananana
        35
    Bananana  
       Nov 11, 2025
    @102errors 感觉这个是这里面的解
    runningowl
        36
    runningowl  
       Nov 11, 2025
    ethusdt
        37
    ethusdt  
    OP
       Nov 11, 2025
    @runningowl 这些 api 比如 userDidTakeScreenshotNotification 的通知,都是截图后才通知的,截图已经把内容截上了。它会通知 app 让 app 做出一些隐私的提醒而已。大部分银行都只能做到这一步。

    最好能找到一个除了 X app 之外的例子,还能实现这样禁止截屏或者修改屏幕内容的。这个链接内的 WhatsApp 我也试了下(很多页面),都可以正常截屏。
    br_wang
        38
    br_wang  
       Nov 11, 2025
    用 netflix 放视频截个屏或者录制屏幕试试。
    ethusdt
        39
    ethusdt  
    OP
       Nov 11, 2025
    @br_wang 这是已知的 DRM
    kasusa
        40
    kasusa  
       Nov 11, 2025
    我去截了两个图。都是留着关注按钮。
    没有你这种情况啊。
    kasusa
        41
    kasusa  
       Nov 11, 2025
    难道我用的是老版本的?
    ethusdt
        42
    ethusdt  
    OP
       Nov 11, 2025
    @kasusa #41 这要问你自己了,用的啥版本。我和我朋友都是可以复现的。
    Shatyuka
        43
    Shatyuka  
       Nov 11, 2025
    @ethusdt #34 “把你自己要隐藏的 view 挂在下面”
    lirijie1
        44
    lirijie1  
       Nov 12, 2025
    iOS 没有提供 Will Take Screenshot 的事件,应该有什么奇技淫巧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   907 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 103ms · UTC 21:03 · PVG 05:03 · LAX 14:03 · JFK 17:03
    ♥ Do have faith in what you're doing.