3

ネイティブiOSミュージックアプリケーションにアクセスすると、アルバムを表示するときに非常にクールなエフェクトが適用されます。iOS Music AppでスクロールしながらUINavigationBarアニメーションを実現するにはどうすればよいですか?

透明なUINavigationControllerを持つUITableViewが表示され、上にスクロールすると、ビューの最初の行が消えてアルバムタイトルのナビゲーションバーに表示されるようです。

ここでは実際に何が起こっているのですか?これを行う既知のフレームワークはありますか?

Animation Step #1 Animation Step #2 Animation Step #3

答えて

0

ここで遊んでいくつかあります。

これを実装する場合は、最初にUITableViewControllerサブクラスにオブザーバを設定し、UITableViewを観察します。より具体的には、yのテーブルビューまたは現在最初に公開されたindexPathの位置を観察します。ヘッダービュー(アルバムアート、共有、お気に入り、その他)は、yの位置に関連してアニメートされます。ヘッダービューのアルファもここで変更されます。また変化している。ヘッダービューのどれがユーザーに公開されているか。ヘッダービューはUITableviewControllerのプロパティで、アニメーションの進行に合わせて操作できます。変化率はUIGestureRecognizer秒の速度(ここでのヒント:Implement velocity in custom UIGestureRecognizer)によって推測することができます。

ナビゲーションバーについては、アルバム名を(プレゼンテーションの)ナビゲーションバータイトルとして設定しますが、非表示にします。アニメーションが完了したら(yの位置が特定のしきい値を超えている)、非表示にしないようにナビゲーションバーのタイトルを設定します。

+0

おかげ@BenJamminイムほとんどを、しかし:

は、私がここにサンプルプロジェクトを設置しましたあなたがテーブルビューのヘッダービューを使用して言及した方がはるかに優れています。しかし、これは手作業の多くです...私はちょうど誰もこれを行うライブラリを構築して驚いた。 – MiMo

+0

あなたはtableViewにオブザーバを必要としません。コールバックはUIScrollViewDelegate(UITableViewDelegateから継承します)にあります;) – Jef

1

私はこれのためのコンポーネントが見つかりませんでしたので、私は自分で何かを実装しようとしました。

基本的には、私はストーリーボードにカスタムヘッダービューをセットアップし、ナビゲーションバーに制約をコンセントで拘束します。

次に、scrollViewデリゲートで、スクロールされた量とscrollViewのcontentOffsetに基づいて、制約の定数値とヘッダーとナビゲーションバーのタイトルのアルファ値を調整します。私は、ヘッダーとして最初のテーブルの行を使用しようとしたことを除いて、あなたが言ったことと同じページに

https://github.com/ale84/CustomTableViewHeaderExample

関連する問題