Snapchat更新状态栏iOS7更新

在最新的Snapchat更新中,当您“向右滑动消息”时,状态栏会以某种渐变的方式从黑色变为白色.

http://imgur.com/osJI20u

他们如何在不使用私有API的情况下执行此操作,或者他们是否使用私有API?

我调查了什么:

乍一看,我认为他们正在做其他人所做的事情(就像rdio目前所做的那样),通过屏幕捕获整个屏幕,然后修改/动画那个屏幕截图.

但是……您无法从该屏幕捕获方法访问或动画UIImage,因此尽管您可以移动/裁剪该屏幕截图,但您无法更改其外观.

所以…我测试了它,当状态栏处于该状态(半黑/半白)时,它仍然是LIVE,因为它不是截图,它响应充电变化/信号变化等,我不知道如果不使用私有API就不可能.

解决方法

这让我很好奇所以我玩了一下应用程序,并在越狱设备上使用Spark Inspector检查了应用程序的视图层次结构,我找到了一些东西.

你不使用截图是不正确的.您正在导航的一侧的状态栏是快照,不会更改.一分钟过后,您可以很容易地看到这一点,您正在转换的视图的新状态栏将会更改,因为它是真实的,但旧的不会因为它是快照.这使得幻觉很容易解决.

以下是高层次的情况:

>当您开始转换时,应用程序会在当前状态下拍摄状态栏的快照(很可能是实际拍摄整个UIScreen的快照并简单地从其中裁剪状态栏)并附加包含该快照的窗口到过渡视图的顶部,锚定到最终过渡位置,并由“从”视图控制器的视图屏蔽.此窗口似乎在UIWindowLevelStatusBar上方有一个windowLevel,因此它可以覆盖实际状态栏.>然后,“到”视图控制器接管实际状态栏并将其更改为“轻量级内容”状态.这提供了一个聪明的错觉,即单个状态栏会根据过渡边界更改颜色,但实际状态栏实际上始终位于快照窗口下方,并且如果不是快照窗口,则确实会在转换开始时立即可见在它的上面.

相关文章

背景 前端时间产品经理决定使用百度统计,使得 工程B 中原统计sdk-友盟统计,需要被去除。之前尝试去除...
结论: alloc负责分配内存和创建对象对应的isa指针; init只是返回alloc生成的对象。 所以alloc后,多次...
更新 如果UI愿意把启动图切割成n份,按一定约束在launchscreen.storyboard中进行排版,启动图效果会更好...
最近在看一本书《Effective OC 2.0》,今天看到有个tip是OC适中循环各自优劣性,作者最终推荐此块循环。...
// // ViewController.m // paintCodeTestOC //gif // Created by LongMa on 2019/7/25. // #import &a...
背景介绍 一般情况下,出于省电、权限、合理性等因素考虑,给人的感觉是很多奇怪的需求安卓可以实现,但...