Snapchat更新状态栏iOS7更新

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

http://imgur.com/osJI20u

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

我调查了什么:

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

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

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

解决方法

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

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

以下是高层次的情况:

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

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...