X 怎么做到修改 iOS 截屏内容的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ethusdt
0.01D
V2EX    程序员

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

  •  
  •   ethusdt
    FaiChou 34 天前 5989 次点击
    这是一个创建于 34 天前的主题,其中的信息可能已经有所发展或是发生改变。

    X screenshot

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

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

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

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

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

    第 1 条附言    34 天前
    录屏也有。。

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

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

    最好能找到一个除了 X app 之外的例子,还能实现这样禁止截屏或者修改屏幕内容的。这个链接内的 WhatsApp 我也试了下(很多页面),都可以正常截屏。
    br_wang
        38
    br_wang  
       33 天前
    用 netflix 放视频截个屏或者录制屏幕试试。
    ethusdt
        39
    ethusdt  
    OP
       33 天前
    @br_wang 这是已知的 DRM
    kasusa
        40
    kasusa  
       33 天前
    我去截了两个图。都是留着关注按钮。
    没有你这种情况啊。
    kasusa
        41
    kasusa  
       33 天前
    难道我用的是老版本的?
    ethusdt
        42
    ethusdt  
    OP
       33 天前
    @kasusa #41 这要问你自己了,用的啥版本。我和我朋友都是可以复现的。
    Shatyuka
        43
    Shatyuka  
       33 天前
    @ethusdt #34 “把你自己要隐藏的 view 挂在下面”
    lirijie1
        44
    lirijie1  
       32 天前
    iOS 没有提供 Will Take Screenshot 的事件,应该有什么奇技淫巧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2683 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 45ms UTC 14:30 PVG 22:30 LAX 06:30 JFK 09:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86