2017-03-16 78 views
5

在Snapchat应用程序中,当表格视图被拖拽到重新加载时,状态栏会更改阿尔法。更改状态栏阿尔法

这是正常的状态栏 This is the normal status bar

这是当表视图拖累会发生什么 enter image description here

如何在状态栏阿尔法改变了吗?框架如何改变?本来我认为这是一个快照,但时钟会像平时一样变化。

回答

8

这应该淡出动画做的伎俩:

/* Swift 3 */ 

let statusBarWindow = UIApplication.shared.value(forKey: "statusBarWindow") as? UIWindow 
UIView.animate(withDuration: 2) { 
    statusBarWindow?.alpha = 0.2 
} 

/* Objective-C */ 

UIWindow *statusBarWindow = (UIWindow *)[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"]; 
[UIView animateWithDuration:2.f 
       animations:^{ [statusBarWindow setAlpha:0.2]; } 
       completion:nil]; 

您还可以设置statusBarWindow的frame和移动它,你怎么想。玩得开心;]

+0

你确定这是通过应用程序商店审查吗?你有证据吗? – lukwuerz

+1

Hi @lufritz!如果你关心私钥,你可以尝试创建2个子字符串并加入它们。做过一次,之后通过审核,之前被一个字符串拒绝。没有人会手动检查你的代码,分析器不会检查所有可能的组合。该项目在NDA之下,因此无法向您展示。附:当没有别的方法时,我只用了几次私人课程/密钥,而客户希望尽快完成某些任务。在生产中做这些东西是不安全的。 –

0

它们很可能是抓住状态栏所在的窗口并对其进行动画处理,或者它们将状态栏上方的窗口放置在视图上并对其进行动画处理。我没有应用程序来检查,但它必须是这两种方法之一。要在状态栏上方放置一个窗口,我认为它是window.windowLevel = UIWindowLevelStatusBar + 1,这样它就会在状态栏上方。如果他们抓住引用,则必须遍历应用程序窗口才能找到它,并且我从来没有试过找到状态栏窗口,但我已经抓住了键盘窗口。如果时钟确实被拉下来,那么它可能是获取状态栏所在窗口的组合,并在上面添加一个窗口并将两者都设置为动画。 Facebook抓住键盘窗口在Facebook Messenger中进行滚动。希望这可以帮助你。

编辑: 我找到了一个获取状态栏窗口here的例子。

此外,我会建议使用CAAnimations,并避免真正改变任何东西。只需使用动画即可呈现该外观。