隐藏magisk是灰色
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了隐藏magisk是灰色相关的知识,希望对你有一定的参考价值。
参考技术A 隐藏magisk是灰色是因为版本变了,建议换一个更新渠道。V7.5以及以下系列,属于传统的面具apk,一般我们点击左上角三个横线,就会看到Magiskhide功能,进去勾选自己不想要检测root的软件,就实现了对该软件隐藏root功能了。部分版本打开并没有找到Magiskhide,也非常简单;点击面具的“设置”按钮,点击设置,找Magisk分栏,直接打开Magiskhide按钮,成功开启按钮后,我们直接重启手机,再次打开面具,就看到了Magiskhide了,使用方法也是勾选APK即可。
使用 MPVolumeView 时隐藏灰色音量叠加?
【中文标题】使用 MPVolumeView 时隐藏灰色音量叠加?【英文标题】:Hide grey volume overlay when using MPVolumeView? 【发布时间】:2011-09-15 12:40:02 【问题描述】:我在我正在播放的电影上放置了一个 MPVolumeView。问题是,每当我使用 MPVolumeView 调整音量时,就会出现标准的灰色音量叠加(当您使用 iPhone 上的摇杆开关时会出现)。有没有办法禁用标准的灰色覆盖?
【问题讨论】:
您找到解决方案了吗?不幸的是,myyellOw 的回答对我不起作用。 @user1349663 我想我已经对更可重复的解决方案有了一些了解。看看我下面的答案。 【参考方案1】:我可能有点晚了,但我想我有一些有用的东西要补充。如果您只是在寻找答案,请跳至我是如何解决的?
什么是MPVolumeView
?MPVolumeView
类用于在屏幕上放置一个控制系统音量的滑块。它应该防止系统音量覆盖在屏幕上出现,但有时不会。当我将自己的 MPVolumeView 添加到视图层次结构时遇到了这个问题,但是当我拖动滑块时仍然看到覆盖出现。
MPVolumeView
如何判断它何时可见?
这是我问自己的问题。不知何故,该类检测它是否可见,并告诉系统相应地隐藏或显示系统卷覆盖。这是因为 Apple 并不真正希望您使用该类只是为了防止覆盖出现,而不是实际向用户显示滑块 UI(如 myell0w 的回答)。
这就是我认为MPVolumeView
尝试检查它是否真的可见的方式:
-
当视图被添加到父视图时,
viewWillMoveToSuperview:
和 viewDidMoveToSuperview
检测到,它会启动一个短计时器。
当计时器触发时,视图通过递归检查superview
属性来遍历其视图祖先树。
MPVolumewView
检查其每个祖先的 hidden = NO
和 alpha
是否大于某个小值(可能为 0.05)。
可能还有其他我不知道的检查,因为此代码当然是封闭源代码。第 1 步中的计时器在那里,这样下面的代码就不会“欺骗”视图:
MPVolumeView *volView = [[MPVolumeView alloc] init];
[self.view addSubview:volView];
volView.hidden = YES;
因为它不会立即检查hidden
属性,而是在它已经设置为YES
之后稍等片刻。
我是如何弄清楚这一切的?一个关键发现是MPVolumeView
的实例在其父视图上调用isHidden
,如以下堆栈跟踪所示:
我的问题是什么? 简而言之,我做了这样的事情:
- (void)viewDidLoad
// Add an MPVolumeView to my view
self.volView = [[MPVolumeView alloc] init];
[self.view addSubview:self.volView];
self.volView.hidden = YES;
- (void)someButtonTouched
// Show the MPVolumeView (and hopefully hide the system overlay)
self.volView.hidden = NO;
但是当我拖动新显示的MPVolumeView
的滑块时,覆盖仍然出现。我意识到这是因为在MPVolumeView
的实例化过程中,它的超级视图被隐藏了。
我是如何解决的?
一旦我意识到MPVolumeView
类如何判断它是否可见,我就有一个简单的方法来“愚弄”它。我在负责MPVolumeView
的类中添加了以下方法:
- (void)refreshVolumeView
[self.volView willMoveToSuperview:self];
[self.volView didMoveToSuperview];
并在每次我需要强制视图重新评估它是否可见时调用它。此方法只是假装将视图重新添加到层次结构中。一旦我满足了视图评估的条件(每个祖先都不是隐藏的或非常低的 alpha),我就调用它,并且覆盖层停止显示。在上面的示例代码中,我将添加一行:
- (void)viewDidLoad
// Add an MPVolumeView to my view
self.volView = [[MPVolumeView alloc] init];
[self.view addSubview:self.volView];
self.volView.hidden = YES;
- (void)someButtonTouched
// Show the MPVolumeView (and hopefully hide the system overlay)
self.volView.hidden = NO;
[self refreshVolumeView]; // <<< This line was added
【讨论】:
很好的答案!像魅力一样工作。谢谢。 您也可以将视图也添加到您的关键窗口中并将其放在视图之外。 @SarenInden 是的,但我希望我的用户实际上也能够使用该控件。 @ravron 请确认此解决方案是否仍然适用于 iOS 10+ @WorksOnMine 我不知道这个解决方案是否仍然有效,但它应该很容易测试——我鼓励你这样做并报告!【参考方案2】:通常当 MPVolumeView 可见时,HUD 不会出现。我在我的应用程序中使用了以下方法,它工作正常:
+ (void)preventSystemVolumePopup
// Prevent Audio-Change Popus
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(-2000., -2000., 0.f, 0.f)];
NSArray *windows = [UIApplication sharedApplication].windows;
volumeView.alpha = 0.1f;
volumeView.userInteractionEnabled = NO;
if (windows.count > 0)
[[windows objectAtIndex:0] addSubview:volumeView];
它基本上只是将音量视图添加到第一个窗口中没有人可以看到的位置,从而阻止系统音量 HUD 显示。我想知道为什么您会看到这个 HUD,即使您在电影上方放置了音量视图。
【讨论】:
@myello0w: 但是你什么时候可以从应用程序更改音量?【参考方案3】:这可能会有所帮助。
-(void)viewDidAppear:(BOOL)animated
[super viewDidAppear:animated];
self.volumeView.hidden = NO;
[self.volumeView willMoveToSuperview:self.volumeView.superview];
[self.volumeView didMoveToSuperview];
【讨论】:
【参考方案4】:最简单的方法......
- (void) viewDidLoad
[super viewDidLoad];
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame: CGRectZero];
[self.view addSubview: volumeView];
...
引用自该线程applicationMusicPlayer volume notification
【讨论】:
以上是关于隐藏magisk是灰色的主要内容,如果未能解决你的问题,请参考以下文章