skip to content
cookieodd's blog

DouyinClearScreen - 一键隐藏抖音UI以及完整的头文件和实例方法

/ 4 min read

目录

下载

查看源码 | 完整头文件


功能介绍

一键隐藏抖音所有 UI 元素,获得沉浸式观看体验。

清屏功能

  • 长按视频触发清屏
  • 隐藏顶部导航栏
  • 隐藏底部 TabBar
  • 隐藏右侧互动按钮(点赞/评论/分享)
  • 隐藏底部信息区(描述/用户名)
  • 再次长按恢复显示

开发资源

  • 完整的抖音 37.6.0 头文件
  • 详细的 UI 层级结构文档
  • 所有控制器和视图类名
  • 适合逆向开发学习

使用教程

步骤

  1. 编译 dylib 文件
  2. 通过 TrollTools 注入抖音
  3. 播放视频时长按屏幕触发清屏
  4. 再次长按恢复 UI 显示

抖音 UI 层级结构

适配版本: Douyin 37.6.0

窗口层

类名说明
AWEMaskWindow抖音主窗口
UITextEffectsWindow系统文本效果窗口

控制器

类名说明
AWENormalModeTabBarController主 TabBar 控制器
AWEBaseRootNavigationController根导航控制器
AWEFeedRootViewControllerFeed 根控制器
AWEFeedContainerViewControllerFeed 容器控制器
AWEPlayVideoViewController视频播放控制器
AWEPlayInteractionViewController播放交互控制器

右侧互动按钮

类名说明
AWEElementStackView右侧互动组件容器
AWEFeedVideoButton视频按钮(点赞/评论/收藏/分享)
AWEPlayInteractionUserAvatarView用户头像视图
AWEPlayInteractionMusicView音乐视图(旋转唱片)

底部信息区

类名说明
AWEPlayInteractionDescriptionLabel视频描述文本
AWEUserNameLabel用户名标签
AWEPlayInteractionProgressContainerView进度条容器

顶部导航栏

类名说明
AWEFeedTopBarContainer顶部栏容器
AWELeftSideBarEntranceView左侧边栏入口
AWEHPDiscoverFeedEntranceView发现入口(搜索图标)

底部 TabBar

类名说明
AWENormalModeTabBar底部 TabBar
AWENormalModeTabBarGeneralButtonTabBar 按钮
AWENormalModeTabBarGeneralPlusButton发布按钮(+)

环境要求

项目要求
iOS 版本15.0+
编译环境Theos
注入工具TrollTools
抖音版本37.6.0(推荐)

核心代码实现

Hook 长按清屏功能

%hook AWEPlayInteractionViewController
- (void)viewDidLoad {
%orig;
// 添加长按手势
UILongPressGestureRecognizer *longPress =
[[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleLongPress:)];
[self.view addGestureRecognizer:longPress];
}
%new
- (void)handleLongPress:(UILongPressGestureRecognizer *)gesture {
if (gesture.state == UIGestureRecognizerStateBegan) {
[self toggleClearScreen];
}
}
%new
- (void)toggleClearScreen {
static BOOL isClearScreen = NO;
isClearScreen = !isClearScreen;
// 隐藏/显示所有 UI 元素
[self hideTopBar:isClearScreen];
[self hideBottomBar:isClearScreen];
[self hideInteractionButtons:isClearScreen];
[self hideDescriptionLabel:isClearScreen];
}
%end

隐藏顶部栏

%hook AWEFeedTopBarContainer
- (void)setHidden:(BOOL)hidden {
if (clearScreenEnabled) {
%orig(YES);
} else {
%orig(hidden);
}
}
%end

隐藏右侧互动按钮

%hook AWEElementStackView
- (void)setAlpha:(CGFloat)alpha {
if (clearScreenEnabled) {
%orig(0.0);
} else {
%orig(alpha);
}
}
%end

作者: @cookieodd | Telegram