7

最新のスナップチャットの更新では、「メッセージを右にスワイプ」すると、ステータスバーが黒から白にグラデーションのように変わります.

http://imgur.com/osJI20u

プライベート API を使用せずにどのようにこれを行っているか、またはプライベート API を使用していますか?

私が調べたこと:

一見したところ、彼らは他の人がしていることを (rdio が現在行っているように) 画面全体をキャプチャし、そのスクリーンショットを変更/アニメーション化することでやっているだけだと思いました。

しかし...そのスクリーンキャプチャメソッドからUIImageにアクセスしたりアニメーション化したりすることはできないため、そのスクリーンショットを移動/トリミングすることはできますが、その外観を変更することはできません.

だから...私はそれをテストし、ステータスバーがその状態(半分の黒/半分の白)にあるとき、それはスクリーンショットではないのでまだライブであり、充電の変更/信号の変更などに応答します。プライベート API を使用しないと、これは不可能であることがわかります。

4

2 に答える 2

15

これに興味を持ったので、アプリで少し遊んで、ジェイルブレイクされたデバイスで Spark Inspector を使用してアプリのビュー階層を調べたところ、いくつかのことがわかりました。

スクリーンショットを使用していないというあなたは間違っています。AWAY をナビゲートしている側のステータス バーはスナップショットであり、変化しません。1 分が経過すると、これを簡単に確認できます。移行先のビューの新しいステータス バーは実際のものであるため変更されますが、古いものはスナップショットであるため変更されません。これにより、錯覚が簡単に解決できます。

高レベルで何が起こっているかを次に示します。

  1. 遷移を開始すると、アプリは現在の状態でステータス バーのスナップショットを取得し (ほとんどの場合、実際には全体のスナップショットを取得しUIScreen、単にステータス バーをトリミングしています)、そのスナップショットを含むウィンドウをトランジションのビューの上部。最終的なトランジション位置に固定され、「from」View Controller のビューによってマスクされます。このウィンドウには上部があるwindowLevelように見えるUIWindowLevelStatusBarため、実際のステータス バーを覆うことができます。

  2. 次に、「to」ビュー コントローラーが実際のステータス バーを引き継ぎ、「ライト コンテンツ」状態に変更します。これは、単一のステータス バーが遷移の境界線で色が変わるという巧妙な錯覚を示しますが、実際のステータス バーは実際には常にスナップショット ウィンドウの下にあり、スナップショット ウィンドウが存在しなければ、遷移が始まるとすぐに表示されます。その上。

于 2014-05-11T07:21:36.117 に答える